我在~/src
。我可以做git grep _pattern_
並獲得與此模式匹配的所有*.cpp
或*.hpp
文件的列表。在Vim中打開所有符合特定模式的文件
現在我想瀏覽所有與模式相匹配的文件,並對它們進行編輯。我如何在Vim中做到這一點? (基本上,我想Vim通過我的目錄一樣的git grep的那樣,並跳到我正確的文件。)
我在~/src
。我可以做git grep _pattern_
並獲得與此模式匹配的所有*.cpp
或*.hpp
文件的列表。在Vim中打開所有符合特定模式的文件
現在我想瀏覽所有與模式相匹配的文件,並對它們進行編輯。我如何在Vim中做到這一點? (基本上,我想Vim通過我的目錄一樣的git grep的那樣,並跳到我正確的文件。)
您可以使用單引號(也是UNIX外殼功能),這樣的:
vim `git grep --name-only <your expression>`
大多數人稱他們爲反引號;) – matpie 2010-02-01 18:10:20
同意,這真是嚴重誤用術語。 – 2010-02-11 23:52:13
+1僅用於'單引號'。 – 2012-03-22 17:14:10
在bash中,你可以做
vim $(grep -l _pattern_ *.cpp *.hpp)
但是這是一個bash的功能,而不是vim功能。
謝謝。我正在尋找這個。 :) – 2016-12-10 18:22:02
你可能設置grepprg和grepformat選項來運行git grep...
和解釋結果。然後,您可以運行命令:grep並將結果讀入quickfix緩衝區 - 有關更多信息,請參閱:h quickfix
。然後你可以通過cnext和:cprev,或者:copen單步執行它們,以便用文件列表打開一個單獨的窗口 - 將光標放在文件名上並按下回車鍵將打開該文件進行編輯。
這個優於Zoran和ammoQ的建議是,它不會將文件讀入內存,直到您想要編輯它們。他們的建議會將數百個文件一次加載到內存中,並且可能成爲管理的噩夢。它也是跨平臺的,所以應該在Windows上工作,而不必使用第三方shell(如cygwin bash)。
可以使用ARGS ex命令:
:args *.cpp *.hpp
這會在當前目錄下打開所有的CPP和HPP文件。
您可以使用任何文件路徑擴展:grep。
通過正確使用quickfix列表,您甚至可以立即轉到正確的行(使用:help quickfix
命令,例如:cn
或:cw
)。所以,如果你使用bash或zsh中:
vim -q <(git grep foo)
似乎是多餘的有:http://stackoverflow.com/questions/1716470/can-you-mass-edit-all-files-returned-in-a- grep和http://stackoverflow.com/questions/1095314/fast-find-in-files-for-vim – 2010-02-01 18:19:34
相關:http://stackoverflow.com/questions/3468763/how-do-i-make-vim-打開所有文件匹配模式在不同標籤 – 2017-01-01 15:46:57