1. 程式人生 > >vim下面搜尋工程目錄下的檔案的某個字串

vim下面搜尋工程目錄下的檔案的某個字串

轉自:https://blog.csdn.net/ranky2009/article/details/43485055

以前用editplus的時候,有一個在檔案中查詢的功能,可以在所有開啟的檔案中查詢字串,也可以在某一個目錄及它的子目錄中查詢.那麼在VIM中是否也有相關的功能呢?答案當然是肯定的.VIM中有個類似grep的命令,叫做vimgrep,語法如下:

:vimgrep /{pattern}/[g][j] {file} ...
    簡單來講,就是在路徑和檔案命符合{file}的所有檔案中,查詢符合{pattern}的字串.(查詢的結果可以用:copen命令開啟quickfix列表檢視).
    沒有引數g的話,則行只查詢一次關鍵字.反之會查詢所有的關鍵字.

    沒有引數j的話,查詢後,VIM會跳轉至第一個關鍵字所在的檔案.反之,只更新結果列表(quickfix).

    灑家再給幾個例子,比方:vimgrep /the menu/ *.php
表示在當前目錄下的副檔名為php的所有檔案中,查詢字串"the menu".
:vimgrep /the menu/ ./includes/*.*
表示在當前目錄中的"includes"目錄裡的所有檔案中,查詢字串"the menu".

如果要在當前目錄及其子目錄中查詢怎麼辦呢?也好辦:vimgrep /the menu/ **/*.*
用這句就可以了.

    查詢時{pattern}可用正則表示式,使用起來和'/'命令是一樣的,就不多說了.

    查詢的結果可以用":copen"
命令檢視,在列表裡,將游標移動至相應的位置,按回車就開啟對應的檔案了.
    注:

        :copen    開啟quickfix

        :cclose    關閉quickfix

        :cc    是在轉到當前查詢到的位置
        :cn    轉到下一個位置

        :cp    轉到前一個位置

vim(gvim)自帶的一個內建的grep,vimpreg命令,具體是:vim[grep] /模式/選項 檔案,(grep可省略)按指定的模式去匹配指定的檔案,預設不區分大小寫,可以用\C選項來開啟區分大小寫,具體命令檢視:h vimgrep,再配合vim強大的擴充套件正則表示式,哪怕只記得一個模糊的檔案內容,也可以搜尋出來,例如:

在你的D:/www/這個專案路徑下有很多檔案,還有子目錄,有一個*.model.*檔案裡面有含有goods和getList()函式,那麼就可以在命令列輸入: 
vim /goods|getList/gj d:/www/**/*model*.{php,js} 
*注goods|getList為檔案時的內容,g代表同一行找到的相同的匹配也會另列出一條索引,意思就是同一行如果出現了二次goods或getList,那麼這一行就會出現二個搜尋結果,如果不加g同一行的就只匹配一次,j的意思就是找到結果後不預設開啟第一個搜尋結果,沒有j選項vim就會自動開啟第一個搜尋到的檔案,再接下來的就是要搜尋的檔案的路徑,這句裡的意思就是遞迴的匹配d盤下www資料夾及子資料夾的內容,model是檔名中含有model,{}是對檔案的字尾進行限制php檔案或js檔案。 
最後在搜尋結束後在命令列裡:cw開啟quickfix視窗就可以看到搜尋結果了。