2012-05-03 4 views
2

TODOを持っているすべてのソースファイルをgvimの分割バッファで開きたいとします。gvimでTODOを持つすべてのファイルを分割する方法は?

これは、grepで出力を編集コマンドにパイプすることで実現できると確信していますが、これを実装する方法がわかりません。

+0

あなたは何件のファイルについて話していますか?同じ画面上に30個のようなものがあるのは少し実用的ではないかもしれません。 – mihai

答えて

6

実際にあなたが実際に求めているものよりもはるかにうまくいくようにする機能がvimにあります。 :help quickfixをチェックしてください。あなたが想像として、本質的に、あなたのgrepを実行することができます。そして、

grep -rn TODO . > index.txt

あなたがVimのクイックでこのインデックスを開くことができます。これはあなたがすべてのTODO中をナビゲートすることができます

vim -q index.txt

:cn(次へ)と:cp(前回)を実行して、これらのファイルをすべて保存します。 :copenにも可能です。下部にクイックリストウィンドウが開き、リスト全体のどこにいるのかがわかり、ファイル内の各TODOに移動できます。

5

あなたはxargsを使用することができます。

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

vimは端末に接続されていないサブシェルで実行されているので、端末を台無しにする傾向があります。 '' args \ 'grep -Ilr TODO。\' '(すべてをすぐに開いたり表示したりすることができます。また、' 'xargs gvim -o'などを使用してください。 – sehe

7

あなたは2つだけか 3があることを知っている限り、私は、分割でそれらを開くことはありません。しかし、編集するファイルが2つか3つしかない場合、なぜあなたは のコマンドを開いて、それらを開くのを自動で探していますか?

これは、あなたが使用できる基本的なgrepのです:

grep -lIr TODO . 

それはTODOし、それらをリスト を含むファイルに対して再帰的にカレントディレクトリを検索します。また、バイナリファイル(.swpファイルや.swoファイルを含む)のマッチングを避けることもできます。

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

あるいは、Vimの内、あなたが巧みにコメントでseheによって提案 として:argaddコマンドとバッククォートの拡張を使用することができます:あなたはGUIのVimを実行している場合で その後、私は行くだろう

:args `grep -Ilr TODO .` 
+1

trも' 'paste -sd ''' ' – Daenyth

+1

' ':sall'や':tab sall'など) – sehe

+0

@seheなぜなら、複雑にすることができれば簡単ですか? :-)この場合バックテックの使用について覚えていませんでした。改行で評価された文字列はうまく動かないでしょう:exec、だから私はtrにパイプを思いつきました。 – sidyll

関連する問題