2012-01-18 7 views
0

ソースツリー内にメソッドFindThisMethod()の定義を含む多数のファイルがあるとします。私はgVimの1つのインスタンスで、これらのファイルをすべて別のバッファで開き、メソッド定義の行にカーソルを置きたいと思います。Vimの関数定義でファイルリストを開く

私はの線に沿って物事を試してみましたCygwinを使用して、Windows XP上で

:これは、vimの中のすべての正しいファイルをロードします

gvim --remote-silent `grep -rnl --include=*.cs 'void FindThisMethod()' *` 

、私はまだ行にカーソルを取得するかどうかはわかりませんgrepと一致します。

grep -rn --include=*.cs "void FindThisMethod()' * | gawk -F: '{print "+"$2" "$1}' 

生成します:vimのは、私は行番号とファイル名のリストを生成するためにはgrepとawkのを組み合わせる試みている構文gvim +<line number> file.txtサポートしているので

+123 file.cs 
+234 file2.cs 
+345 file3.cs 

をしかし、私は使い方がわかりませんよこれは、指定された行でファイルを開くgvimで行います。私はこの出力をxargs -L 1 gvim --remote-silentに配管しようとしましたが、xargsからgvimのWindowsバイナリを起動してから失敗しました。

もっと良い方法があるはずだ。)

答えて

1

既に使用しているgrepでビルドする場合は、次のようにします。

grep -rn --include=*.cs "void FindThisMethod()' > quick.txt 

gvim -q quick.txt 

これは、あなたが次の、「CP」に行くに行くためにミニウィンドウ、「CN」の各検索の試合を見るために「コペン」を行うことを可能Vimのクイックへのgrepの結果をロードします以前。

Try: "help quickfix" 

しかし、grepよりも優れているのは、cscopeでvimを使用することです。 Cscopeはvimとうまく統合され、例えば "myfunc"(:cs f s myfunc)やmyfunc(:cs f c myfunc)を呼び出すすべての関数を見ることを可能にするデータベースを構築します。これはクイックフィックスウィンドウと統合され、結果をナビゲートすることができます。

Try: "help cscope" 
+0

Perfect、thanks Benj。 – telenachos

2

あなたは

gvim --remote...etc...etc '+grep --include=*.cs "void FindThisMethod()" *' 

ため

多くのための

:help :grep 

を見ることないVimの組み込みはgrepを使用したほうが良いかもしれません

+1

:grepまたは:vimgrepを使用することを強くお勧めします(私は後で気に入っていますが、遅くても遅くても、少なくとも常に動作します)。 – dsummersl

+0

vimgrepを使っても大変感謝しています。私は今までそれに精通していませんでした:) – telenachos