VIM 多檔案查詢替換

2021-06-05 03:56:03 字數 1804 閱讀 6430

1、多檔案查詢 

1.1、grep 

直接在vim中輸入:grep abc * 這是直接呼叫unix下的grep命令 

1.2、vimgrep 

基本用法就是

:vimgrep /匹配模式/[g][j] 要搜尋的檔案/範圍 

:vim[grep][!] //[g][j] ...

g 和 j 是兩個可選的標誌位,g表示是否把每一行的多個匹配結果都加入。j表示是否搜尋完後定位到第乙個匹配位置。

要搜尋的檔案 可以是具體的檔案路徑,也可以是帶萬用字元的路徑比如 *.as **/*.as ,**表示遞迴所有子目錄。 要搜尋的檔案和或搜尋範圍都可 以寫多個,用空格分開。

例子::vimgrep /\/ **/*.as 搜尋當前目錄以及所有子目錄內as檔案中的 "flash"

:vimgrep /an error/ *.c就是在所有的.c檔案中搜尋an error。

:vimgrep/an error/* 意思是查詢當前目錄下的檔案中的an error,不包括子目錄

1.3、定位 

輸入上述的命令後,可以像輸入:make命令,那樣定位匹配到的檔案位置 

:cnext (:cn)           下乙個匹配位置

:cprevious (:cp)     上乙個匹配位置

:cwindow (:cw)     quickfix視窗,可以選擇匹配的檔案位置

:cl(:clist)                檢視所有匹配的位置

2、多檔案替換(arg) 

a、加入要處理的檔案  

:args *.txt

b、輸入對上述檔案的動作  :argdo %s/hate/love/gc | update  (這裡將hate替換成love,update表示要寫入到檔案中,否則只作替換而不寫入)

**:在我們的日常工作中,經常需要將多個檔案中的某個字段替換為其他的字段,但多數的編輯器只提供了在開啟檔案中的查詢和替換(當然,也有很多強大的編輯器支援多檔案查詢和替換,如editplus支援在所有開啟檔案中查詢和替換等等),那麼,在強大的vim中,如何進行多檔案的查詢和替換呢?

答案是利用 args 命令!

舉例說明,如果你想將當前目錄下所有型別的檔案中的 oldword 替換為 newword,那麼只需要開啟當前目錄下的某個檔案,輸入如下兩條命令並回車:

:args *.*

:argdo %s/oldword/newword/egc | update

我們解釋下所用到的命令:

第一行,我們使用 args 命令,將當前目錄下所有型別的檔案都加入到引數列表中(不包括子資料夾中的檔案,),以備後續操作。

args命令我還沒完全搞清楚,嘿嘿。實驗了下,使用 :args */* 的話,是將當前目錄下 所有在子資料夾中的目錄和子資料夾中的檔案(不包括下一級檔案)加入引數列表中。

了解了這點,你也可以只替換需要的型別,如 :args *.html。舉一反三,反不出來的,再去google,呵呵。 

第二行,使用 argdo 命令,對引數列表中的檔案進行替換操作。s 就是替換命令了,加上 % 指對所有行,即全文匹配。g 指對每一行中所有匹配的地方都執行替換,e 指使用正則模式,為了區分大小寫。最後的 c 指每次替換前,都要確認一下。 

查詢操作呢?引用一下別人的命令吧:

查詢

:args *.cpp

:argdo /word

替換:args *.cpp

:argdo %s/word/new/eg | update

最後說一點,如果操作失誤怎麼辦?上面的命令是直接操作檔案,即存檔了的。

操作失誤?那就狂按 u 吧,

Vim多檔案查詢與替換

vim中也可以像普通ide那樣的在多個檔案中查詢的功能,用的是 vimgrep這條命令,格式如 vimgrep aaa 執行這條命令後,可以通過 cw命令開啟匹配的視窗進行查詢結果的檢視。在我們的日常工作中,經常需要將多個檔案中的某個字段替換為其他的字段,但多數的編輯器只提供了在開啟檔案中的查詢和替...

Linux使用vim進行多檔案查詢和替換的方法

在linux平台上,有很多優秀的shell命令組合來做多檔案查詢 替換,比如這些命令 find,sed,grep,awk,perl。但其他平台比如windows上就沒那麼方便了,這時候vim內建的多檔案查詢命令就有用武之地了,雖然比起外部命令來稍微慢了一點。vim 多檔案查詢 這個vim內建命令就是...

vim 查詢多個檔案, 替換

1 多檔案查詢 1.1 grep 直接在vim中輸入 grep abc 這是直接呼叫unix下的grep命令 1.2 vimgrep 基本用法就是 vimgrep 匹配模式 g j 要搜尋的檔案 範圍 vim grep g j g 和 j 是兩個可選的標誌位,g表示是否把每一行的多個匹配結果都加入。...