TODOを含むすべてのソースファイルをgvimの分割バッファーで開きたい。
grep
これは、出力を編集コマンドにパイプするで実行できると確信していますが、これを実装する方法がわかりません。
TODOを含むすべてのソースファイルをgvimの分割バッファーで開きたい。
grep
これは、出力を編集コマンドにパイプするで実行できると確信していますが、これを実装する方法がわかりません。
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 .`
実際、vimには、実際に要求したものよりもはるかにうまく機能する機能があります。チェックアウト:help quickfix
。基本的に、想像どおりにgrepを実行できます。
grep -rn TODO . > index.txt
次に、vimのクイックリストでこのインデックスを開くことができます。
vim -q index.txt
:cn
これにより、 (次へ)および:cp
(前へ)を実行することにより、これらすべてのファイル内のすべてのTODOをナビゲートできます。:copen
下部にあるクイックリストウィンドウを開いて、リスト全体のどこにいるかを示し、任意のファイルの各TODOに移動できるようにすることもできます。
あなたが使用することができますxargs
:
grep -l TODO * | xargs vim -o
使用しているオペレーティングシステムとシェルについては、まだ述べていません。ただし、次のようbash
なものを使用していると仮定すると、これは機能するはずです。
vim -o $(grep -lr TODO .)
ただし、現在の作業ディレクトリがgitリポジトリなどである場合は注意が必要です。これには、そこにファイルが含まれるためです。また、vimの設定方法によっては、古いスワップファイルも取得する可能性があります。これを回避するために、私はalias
to grep
、buncho'--exclude
と--exclude-dir
引数を持っています。例えば:
alias gg='grep --exclude='\''*.sw?'\'' --exclude-dir='\'.git\'