在Linux系統(tǒng)上,我們可以在vim中使用find,sed,grep,awk,perl等shell命令來(lái)操作多文件查找及多文件替換,下面來(lái)看具體內(nèi)容.
在linux平臺(tái)上,有很多優(yōu)秀的shell命令組合來(lái)做多文件查找/替換,比如這些命令:find,sed,grep,awk,perl,但其他平臺(tái)比如windows上就沒(méi)那么方便了,這時(shí)候vim內(nèi)置的多文件查找命令就有用武之地了,雖然比起外部命令來(lái)稍微慢了一點(diǎn)點(diǎn)兒.
vim 多文件查找
這個(gè)vim內(nèi)置命令就是vimgrep,有兩種基本的使用方式:
- :vim[grep][!] /{pattern}/[g][j] {file} ...
- :vim[grep][!] {pattern} {file} ...
file部分支持通配符,*代表當(dāng)前目錄,**代表當(dāng)前目錄及其子目錄(遞歸),比如*/*.c代表當(dāng)前目錄下的c源程序文件,**/*.c代表當(dāng)前目錄及其遞歸子目錄下的所有源程序文件,file部分可以指定多次,以下命令查看匹配結(jié)果:
- :cn[ext] 下一個(gè)結(jié)果
- :cp[revious] 上一個(gè)結(jié)果
- :cw[indow] quickfix窗口,結(jié)果文件列表
更詳細(xì)的用法參見:help vimgrep 和下面的refs.
vim 多文件替換
實(shí)際上只要如下兩個(gè)命令即可,假設(shè)要將當(dāng)前目錄下所有擴(kuò)展名為.txt/.cpp的文件中的hate替換成love:
- :args *.txt *.cpp :argdo %s/hate/love/gc | update
- //Vevb.com
- :args *.txt *.cpp
- :argdo %s/hate/love/gc | update
就可以完成啦,解釋如下:
- :args *.txt *.cpp
- :args *.txt *.cpp
這樣寫會(huì)掃描當(dāng)前目錄下的.txt 和 .cpp文件,并加入到參數(shù)列表,但是這樣寫只會(huì)稻苗當(dāng)前目錄,如果想要遞歸掃描所有下級(jí)目錄的話,用:
- :args **/*.txt
- :args **/*.txt
如果只想掃描下一級(jí)目錄,即不掃描當(dāng)前目錄的話,用:
- :args */*.txt
- :args */*.txt
- //而
- :argdo %s/hate/love/gc | update
- :argdo %s/hate/love/gc | update
是將參數(shù)列表中的所有文件的hate提換成love,并寫入硬盤,如果沒(méi)有|update,就不會(huì)寫入,但相應(yīng)的替換也會(huì)被中斷.
最后強(qiáng)調(diào)一點(diǎn),使用替換命令的時(shí)候,一定記得備份,因?yàn)樘鎿Q是直接寫入硬盤滴哦……
好啦,希望這篇文章對(duì)大家有用~
新聞熱點(diǎn)
疑難解答
圖片精選