2012-09-21 187 views

回答

23

不,你不需要需要任何插件。默認:vimgrep(或:vim)就是你所有的需要

搜索foo在每個文件在當前目錄:在每一個JavaScript文件

:vim foo *.js | cw 

搜索foo

:vim foo * | cw 

搜索foo在每一個JavaScript文件在當前目錄當前目錄遞歸:

:vim foo **/*.js | cw 

在當前目錄下的每個文件搜索當前詞:

:vim <C-r><C-w> * | cw 
:vim <cword> * | cw 

(編輯:使用:cw[indow]代替:copen

+0

看起來不錯,但有沒有辦法來打開發現一個文件結果沒有集中緩衝區? –

+0

當然。請參閱':h quickfix'。例如':cc5'跳到錯誤號5,':cn'跳到下一個錯誤,':cN'或':cp'跳到前面的錯誤... – romainl

+0

明白了,謝謝! –

9

聽起來像是你需要ack.vim

這個插件是用於Perl模塊應用::確認前。 Ack可以用作grep的99%使用的替代品。這個插件將允許你從vim運行ack,並在分割窗口中顯示結果。

用法:

:Ack [options] {pattern} [{directory}] 
Search recursively in {directory} (which defaults to the current directory) for the {pattern}. 

包含搜索項的文件將在分割窗口在每次出現時所列,用發生的行號沿,一次。此窗口中的[Enter]行將打開文件,並將光標放在匹配行上。

5

:grep Vim命令代表所述搜索到外部grep工具(或類似ack兼容替代方案中,經由'grepprg'設置)。或者,您可以使用:vimgrep,它在Vim中執行搜索。這允許使用相同的Vim風格的正則表達式和glob模式(例如**/),但它通常比較慢,因爲每個文件都被讀入Vim緩衝區。

這兩個命令都會在quickfix窗口中顯示結果,您可以從中導航到匹配項。

你並不需要爲這個任何插件,雖然有幾個可用的嘗試,使操作更簡單或支持不同的搜索命令(例如已經提到ack.vim)。