タグファイルを生成した後exuberant-ctags、関数呼び出しからその宣言にジャンプできます<C-]>。
私の質問は、他の方法でそれを行う方法ですか?カーソルが関数の定義上にある場合、関数が呼び出される行に移動するにはどうすればよいですか?
ctagsで生成されたファイルを見ると、呼び出しの場所ではなく、定義の場所に関連する情報しか表示されません。それはできないことを意味します。それ以外exuberant-ctags?
タグファイルを生成した後exuberant-ctags、関数呼び出しからその宣言にジャンプできます<C-]>。
私の質問は、他の方法でそれを行う方法ですか?カーソルが関数の定義上にある場合、関数が呼び出される行に移動するにはどうすればよいですか?
ctagsで生成されたファイルを見ると、呼び出しの場所ではなく、定義の場所に関連する情報しか表示されません。それはできないことを意味します。それ以外exuberant-ctags?
回答:
を使用して関数呼び出しにジャンプすることはできませんctags。C / C ++およびJavaにはがありcscope、Vimとうまく統合されます(を参照:help cscope)。他の言語では、cscope互換性のあるデータベース(hscopeHaskell、starscopeRuby、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。追加のキーストロークなしで以前に設定したコマンドラインを使用します。このメカニズムはかなりいため、クリーンアップを使用できますが、うまく機能しました。