批量替換
回憶上次
- 我們可以用vimdiff快速的比較文件
- 這很實用!!!
- 實用的一些跳轉方式
- 遍歷所有的修改change
]c
下一條修改[c
上一條修改
- 遍歷所有的函數method
]m
下一條修改[m
上一條修改
- 面對不同點
- 把當前的改成對比的 - do - diff obtain
- 把對比的改成當前的 - dp - diff put
- 關于多窗口
- 還有什么好玩的嗎?????
回憶同時打開2個文件執行windo
vi -o o1 o2
:windo normal Ioeasy
windo
所有窗口都執行normal
進入普通模式Ioeasy
插入oeasy
:windo normal o
windo
所有窗口都執行normal
進入普通模式o
換行
:windo normal "%p
windo
所有窗口都執行normal
進入普通模式"%p
粘貼各自文件名
批量替換
:windo %s/oeasy/o2z/g
windo
所有window
窗口都進行%s/oeasy/o2z/g
把oeasy
替換為o2z
- 然后可以
:wqall
全部保存
批量細節
- 可以設置
range
,這個指的是window
編號:1,3windo normal Ioeasy
- 可以執行批處理序列,用
|
隔開各個命令:windo %s/oeasy/o2z/g| %s/o2z/o3z/g
- 這樣就可以執行兩條替換命令了
:windo set nolist nofoldcolumn | colorscheme blue
bufdo
- 除了
windo
- 我們還可以對每一個
buffer
執行命令:bufdo %s/oeasy/o2z/g| %s/o2z/o3z/g
- 可以設置 autowrite 自動保存
- 也可以設置 hidden 支持未修改buffer隱藏
- 還可以
:bufdo %s/oeasy/o2z/g| %s/o2z/o3z/g|update
自動更新
- 可
:ls
、:buffers
查看當前的buffers
列表 :bd1
、:bd o2z.txt
?可刪除buffers
e .
可打開新的buffer
緩沖- 可以用
:b1
選擇緩存
argdo
- 我們還有一種批量執行命令的方式
:argdo %s/oeasy/o2z/g| %s/o2z/o3z/g
- 打開.c文件,設置文件格式并更新
:args *.c
:argdo set ff=unix | update
- 打開
.c
或.h
文件,批量替換并更新:args *.[ch]
:argdo %s//
/My_Foo/ge | update
- 可以用
:args
查看相應的參數列表 - 可以用
:argd
刪除參數 - 可以用
:arga
添加參數
把網頁文件批量替換md文件
vi **/*.html
- 把2級目錄下所有html用vim打開
:args
- 觀察所有參數
:argdo %s//[!/2]/1 | update
- 替換img標簽
:argdo %s//(./{-/}/)/a>/[/2]/1/g | update
- 替換a標簽
:%s//(.*/)/- /1/gc
- 替換h1標簽
:%s/
/(.*/)
/ - /1/g- 替換h2標簽
之前 - zs
- 要求
- 把
oeasy.org
替換為oeasy.io
- 但是
vim.org
不替換
- 把
/oeasy/zs.org
- 查找前面有
oeasy
的.org
- 查找前面有
:%s/oeasy/zs.org/.io/g
- 前面是
oeasy
的.org
換成.io
- 前面是
:%s//
- 以
o
為單詞開頭的.org
都替換
- 以
多文件替換
:argdo %s//
- 對所有的arguments參數
- 執行全文批量替換
- 并且更新
/^/s*/zsif
- 開頭只有空格和tab的if
//(./{-}/zsFab/)/{3}
- 第三個
Fab
- 第三個
之后 - ze
end/ze/(if/|for/)
endif
和endfor
中的end
綜合應用
/
- 以
o
開頭的 - 后面跟
o
什么g
的
- 以
:bufdo %s//
- 把以
o
開頭的、后面跟o
什么g
的單詞都換成ooo
- 對于所有的
buffers
- 全文替換
- 把以
總結
- 這次有三種批量替換,分別是
:windo
:bufdo
:argdo
- 執行的
{cmd}
可以用|
按順序增加
- 分別對應的
windows
buffers
arguments
- 各有各自的列表、切換、刪除增加的方式
- 以什么開始、結束的模式
zs
ze
- 關于
window
窗口容器- 我們切得越細
- 可用的范圍越小
- 總共
80*24
的屏幕資源很快就用完了
- 我又想多線程訪問
- 又想有足夠的屏幕來編輯
- 那怎么辦呢?????
- 除了window之外還有容器嗎?????
- 下次再說 ????
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
[藍橋實驗樓 邀請碼FJWYIMGB] (https://www.lanqiao.cn/courses/2840)