2

TODOを含むすべてのソースファイルをgvimの分割バッファーで開きたい。

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

4

4 に答える 4

7

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

これは、使用できる基本的なgrepです。

grep -lIr TODO .

現在のディレクトリを再帰的に検索して、それらを含むファイルを検索し、 TODOリストします。また、バイナリファイル(.swpファイルと.swoファイルを含む)の一致も回避します。次に、GUI Vimを実行している場合は、次のようにします。

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

または、Vim内:argadd で、コメントでseheが巧妙に提案したように、コマンドとバックティックの拡張を使用できます。

:args `grep -Ilr TODO .`
于 2012-05-03T12:47:11.247 に答える
6

実際、vimには、実際に要求したものよりもはるかにうまく機能する機能があります。チェックアウト:help quickfix。基本的に、想像どおりにgrepを実行できます。

grep -rn TODO . > index.txt

次に、vimのクイックリストでこのインデックスを開くことができます。

vim -q index.txt

:cnこれにより、 (次へ)および:cp(前へ)を実行することにより、これらすべてのファイル内のすべてのTODOをナビゲートできます。:copen下部にあるクイックリストウィンドウを開いて、リスト全体のどこにいるかを示し、任意のファイルの各TODOに移動できるようにすることもできます。

于 2012-05-03T14:52:47.143 に答える
5

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

grep -l TODO * | xargs vim -o
于 2012-05-03T12:38:29.347 に答える
0

使用しているオペレーティングシステムとシェルについては、まだ述べていません。ただし、次のようbashなものを使用していると仮定すると、これは機能するはずです。

vim -o $(grep -lr TODO .)

ただし、現在の作業ディレクトリがgitリポジトリなどである場合は注意が必要です。これには、そこにファイルが含まれるためです。また、vimの設定方法によっては、古いスワップファイルも取得する可能性があります。これを回避するために、私はaliasto grep、buncho'--exclude--exclude-dir引数を持っています。例えば:

alias gg='grep --exclude='\''*.sw?'\'' --exclude-dir='\'.git\'

于 2020-07-19T19:19:58.143 に答える