2012-01-08 92 views
2

我喜歡不時做的一件事就是快速搜索我正在處理的目錄並找到對特定字符串的所有引用,特別是在從其他人調試代碼時。 VIM是否仍然無法進行此類搜索?有沒有替代方案直接與普通終端做到這一點?VIM搜索多個關閉的文件

ATM(因爲我還在學習VIM)我在TextMate中進行搜索並找到字符串。

+0

我剛剛發現這個插件可以追溯到2007年?任何新的或足夠穩定的使用? http://www.vim.org/scripts/script.php?script_id=1813 – 2012-01-08 03:35:07

+1

請參閱以下非常類似的問題:「[將通過命令獲取的一組文件加載到Vim緩衝區中](http://stackoverflow.com/ (Vim:q/6870139/254635)「,」[使用vim重構目錄中的類/方法/字符串的高效方法](http://stackoverflow.com/q/7203963/254635)「,」[Vim:我怎麼能在整個項目/文件夾中遞歸搜索單詞?](http://stackoverflow.com/q/7950558/254635)「。 – 2012-01-08 06:03:14

回答

5

您可以使用vim命令:vimgrep。這將搜索指定文件中的模式,並將結果放入quickfix窗口,然後您可以使用該窗口跳轉到特定的匹配項。因此,例如在每一個.php文件在當前目錄中搜索foo遞歸你會做

:vimgrep "foo" **/*.php 

另一種選擇是命令:grep實際上調用grep程序(或任何grepprg設爲)。它還會將結果放在quickfix窗口中,以便輕鬆導航。但是,這要求您的系統上有grep

+0

美麗,正是我在找的東西。 – 2012-01-09 05:08:18

4

vim的編輯器,不是真正的文件搜索器。然而,調用shell並運行'grep'非常簡單。假設你是一個Unix的十歲上下的環境(TextMate的? - Mac系統)在命令模式下,按Ctrl-Z,你會在shell提示符,然後做

grep somestring *.c 

,你會得到所有匹配任何C源文件中的「somestring」。

一旦完成grepping,只要做一個fg(前景)命令和繁榮 - 回到VIM。

+1

不錯的主意,我喜歡你的建議,它運作良好。更好的時候,我可以做grep somestring *。*並返回文件名旁邊的所有實例。 – 2012-01-09 05:00:54

1

vimgrep的工作,但如果源恰好是在Git中,那麼你可以使用tpope的優秀https://github.com/tpope/vim-fugitive插件,它暴露了:Ggrep掛接在GIT中grep的更大的靈活性。

如果它是你正在尋找的特定實體(函數,變量等),與ctags的集成也可能是你感興趣的。

0

聽起來像你可能想看看vim標籤搜索功能結合ctags。 ctags是一個實用程序,可用於爲源代碼(完整項目樹,而不僅僅是目錄)生成各種語言對象的索引(標記文件)。在vim中,標籤是可以跳轉到或搜索的標識符。

見VIM文檔:

 :help tagsrch 

或者:

http://vimdoc.sourceforge.net/htmldoc/tagsrch.html#ctags