星期五, 6月 23, 2006

[Note]Grep in vim

怎麼直接在 vim 裡面直接去 grep 檔案呢?

答案在這裡:grep.vim - Grep search tools integration with Vim

安裝步驟很簡單,下載以後,把 grep.vim 丟到 $HOME/.vim/plugins (Windows 就是 c:\documents and settings\your_name\vimfiles\plugins)。
接著就是設定啦,打開你的 $HOME/.vimrc (Windows 是 c:\documents and settings\your_name\_vimrc ),加入下面設定,主要是告訴 grep.vim grep 與 find 的路徑。因為我是用Native Win32 ports of some GNU utilities,又安裝在 c:\tools,所以就是:
let Grep_Path='C:\tools\UnxUtils\usr\local\wbin\grep.exe'
let Grep_Find_Path='C:\tools\UnxUtils\usr\local\wbin\find.exe'
let Grep_Xargs_Path='C:\tools\UnxUtils\usr\local\wbin\xargs.exe'
let Grep_Skip_Dirs='CVS'
let Grep_Default_Options='-ir'
let Grep_Cygwin_Find=0
let Grep_Null_Device='NUL'
let Grep_Shell_Quote_Char=""


完成這些步驟之後,重新打開vim,就可以用 :Grep your_pattern 來進行搜尋了。

搜尋的結果,vim會切割出另外一個 Windows 來顯示(通常在下面),你可以切換到該視窗(ctrl+w j),直接瀏覽搜尋結果,如果確定該行是你要的結果,也可以直接按下 Enter,vim 就會自動打開那個檔案並移到該行去。
這比你利用 console 去 grep,再手動切回 vim 來開檔要快多了。

如果要關閉搜尋結果,輸入 :cclose 就可以關閉。
:copen 是打開搜尋結果。
:colder 是切換到上一個搜尋結果。
:cnewew 是切換到較新的搜尋結果。

更多的用法,可以參照官方網頁

2 則留言:

匿名 提到...

我也是一個 gvim 迷。
有一點很遺憾的,就是 gvim 裡面的 grep 做得不好。我寫了一個程式,類似 grep 的東西,可以 recursivley 進入當前目錄下的所有 *.c *.h 檔案 找出所有關鍵字。
http://yylam.blogspot.com/2008/04/yylam-2008-0-4-20-include-include.html

匿名 提到...

http://yylam.blogspot.com/2008/04/yylam-2008-0-4-20-include-include.html 我也弄了一個 grep in vim