2008年6月19日 星期四

:help new-vimgrep

Vim 7.X 有一個相當實用的功能 vimgrep
相關的說明可以參考 :help new-vimgrep
我自己則是定義了三個快速鍵來使用
nmap <s-f9> viwy:vimgrep /\<<C-R>"\>/g **/*.[ch] **/*.[ch]pp **/*.java **/*.p[ly] **/*.rb<CR>
nmap <c-n> :cn
nmap <c-p> :cp
這樣就可以很方便地在 C/C++/Java/Perl/Ruby/Python 的程式碼樹當中快速搜尋關鍵字~
使用 Ctrl+n 來跳到後一個出現的地方
使用 Ctrl+p 來跳到前一個出現的地方
連 Google Search 都沒有這麼好用~ :P

7 則留言:

匿名 提到...

再請教一下,若要作 exact match(大小寫皆要相同),該怎麼作呢?

$4 提到...

在多一個 \c 就可以了~ ;)
nmap <S-F9> viwy::vimgrep /\<<C-R>"\>\c/ **/*.[ch] **/*.[ch]pp **/*.java **/*.p[ly] **/*.rb<CR>

匿名 提到...

大感謝 :D

Arrakeen 提到...

viwy 的部份其實可以替換成 cword 或是 cWORD .

那麼變成 :vimgrep <cword> **/*rb 就乾淨多了。

$4 提到...

因為 <cword$gt; 沒辦法夾在 /\<<C-R$gt;"\$gt;/ 裡面所以... ^^|

Arrakeen 提到...

aha, 如果要這樣做的話,可以利用 exec 來做:

exec 'vimgrep /\<' . expand('<cword>') . '\>/ *.c'

$4 提到...

感謝 c9s ~ :D
nmap <s-f9> :exec 'vimgrep /\<'.expand('<cword>').'\>/g **/*.[ch] **/*.[ch]pp **/*.java **/*.p[ly] **/*.rb'<CR>