タグファイルを生成した後exuberant-ctags
、関数呼び出しからその宣言にジャンプできます<C-]>
。
私の質問は、他の方法でそれを行う方法ですか?カーソルが関数の定義上にある場合、関数が呼び出される行に移動するにはどうすればよいですか?
ctagsで生成されたファイルを見ると、呼び出しの場所ではなく、定義の場所に関連する情報しか表示されません。それはできないことを意味します。それ以外exuberant-ctags
?
タグファイルを生成した後exuberant-ctags
、関数呼び出しからその宣言にジャンプできます<C-]>
。
私の質問は、他の方法でそれを行う方法ですか?カーソルが関数の定義上にある場合、関数が呼び出される行に移動するにはどうすればよいですか?
ctagsで生成されたファイルを見ると、呼び出しの場所ではなく、定義の場所に関連する情報しか表示されません。それはできないことを意味します。それ以外exuberant-ctags
?
回答:
を使用して関数呼び出しにジャンプすることはできませんctags
。C / C ++およびJavaにはがありcscope
、Vimとうまく統合されます(を参照:help cscope
)。他の言語では、cscope
互換性のあるデータベース(hscope
Haskell、starscope
Ruby、Go、JavaScriptのfi)を生成/エクスポートするツールを見つけることができるかもしれません。また、使用することができるcscope
とGNUグローバル指し示すことによって、データベースcscopeprg
にgtags-cscope
。
ちなみに、英語の使用を時折困惑させることで先送りにならない場合は、;)の代わりにuniversal-ctagsを使用することもできますexuberant-ctags
。後者は何年も更新されていません。前者は積極的にメンテナンスされているフォークです。
cscope
自体は、C / C ++、Lex、およびYaccをサポートしています。Javaのサポートはわずかに役立ちます。あなたはGNUから(古いスタイル)PHPとJavaScriptのサポートを得ることができますglobal
を経由して、gtags-cscope
ユーティリティ。そして、上で言ったように、cscope
互換性のあるデータベースをエクスポートできる他のインデクサーがあります。
cscope
それ自体はPHPもJavaScriptもサポートしていません。ただし、GNU を使用してPHPおよびJavaScriptファイルのインデックスを作成してglobal
から、実行gtags-cscope
して結果のgtags
ファイルをで使用できますcscope
。
cscope
のソースを調べることを検討してください。 cscope
かなりリラックスしたCパーサーがあります。それがすべてであり、それがすべてです。そのパーサーを使用すると、適切な値の「サポート」のために、多くの言語を「サポート」します。構造体は、Cに多少似ている限り認識されます。そのため、fi Javaクラスと新しいPHP構造体は認識されません。fiとstarscopeを比較します。これにより、実際に新しい言語を追加できます。
Vimのgrepコマンドを使用して、プロジェクト内のすべてのファイルを検索できます。
:grep! "\<<cword>\>" . -r
:copen
それをキーバインドに入れましょう:
nnoremap <F4> :grep! "\<<cword>\>" . -r<CR>:copen<CR>
大規模ななじみのないコードベースを探索しているとき、このワンキーのプロジェクト全体の検索は非常に貴重であると思います。
\<
と\>
は、単語の開始と終了を示す正規表現シーケンスであるため、部分一致は取得されません。(-w
これを実現する別の方法として、grep のオプションがあります。)
ただし、これは非インテリジェント検索であるため、同じ単語が無関係のコンテキストに表示される場合、誤検出が発生する可能性があります。
正直に、代わりにgrep.vimプラグインの独自の修正バージョンを使用します。これは少し使いやすいです:
src/ lib/
代わりに特定のフォルダーをターゲットにできます.
)、変更を記憶します。\b
、\<
andの代わりに使用する必要があり\>
ます。私はそれを設定し、このようないくつかの標準ファイルを除外します。
高速アクセスのために、2つのキーバインドを作成します。 F3コマンドラインを編集できますF4。追加のキーストロークなしで以前に設定したコマンドラインを使用します。このメカニズムはかなりいため、クリーンアップを使用できますが、うまく機能しました。