2012-05-03 39 views

回答

6

在vim中實際上有一個功能,它可能做你想要比你實際要求更好的東西。檢出:help quickfix。從本質上講,你可以執行你的grep正如你所想象:

grep -rn TODO . > index.txt

然後你就可以在VIM的快捷列表打開這個指數:

vim -q index.txt

這將允許你通過在每一個TODO導航通過執行:cn(下一個)和:cp(之前)的所有文件。也可以在:copen的底部打開快速列表窗口,顯示您在整個列表中的位置,並允許您導航到任何文件中的每個TODO。

5

您可以使用xargs

grep -l TODO * | xargs vim -o 
+0

由於vim在子外殼中運行,而不是連接到終端,所以這有一個弄亂終端的趨勢。至少,使用'xargs gvim -o'或者類似的 – sehe

7

是以裂片我不會打開它們,除非你知道,只有兩個或 三人。但是如果只有兩到三個文件需要編輯,爲什麼你要尋找一個命令來自動打開它們呢?

這是基本的grep你可以使用:

grep -lIr TODO . 

它遞歸搜索當前目錄包含TODO和 列表他們的文件。它也避免匹配二進制文件(包括.swp和.swo文件)。 然後,如果你正在運行一個GUI Vim的,我會去用:

mvim --remote-silent $(grep -lIr TODO .) 

或者,在Vim,你可以使用:argadd命令和反引號擴張 巧妙地sehe在評論中建議:

:args `grep -Ilr TODO .` 
+1

tr也可以'paste -sd''' – Daenyth

+1

你可以''args'' grep -Ilr TODO。('要立即打開/顯示它們全部, ':sall'或':tab sall'等) – sehe

+0

@sehe嗯,爲什麼簡化如果你可以複雜化? :-)我不記得在這種情況下使用反引號,並且用換行符評估的字符串在exec下運行得並不好,所以我想出了用tr指向的管道。 – sidyll

相關問題