外部コマンドを使用せずにコードプロジェクトをナビゲートする


9

Ctagsや他の外部ツール使用せずにコードベースをナビゲートするために、コマンドモードまたは検索モードでVimコマンド/クエリのツールボックスを収集しようとしています。Ctagはすばらしいですが、サポートは、行き詰まっている開発環境によって異なります。Vimの知識だけに依存したいと思います。


4
私の最初の提案はcscopeなので、「ctags」ではなく「external tools」と言うべきでしょう。
muru 2015

1
私が使用するものの1つはcommand gdです。これにより、カーソルがカーソルの下の変数のローカル宣言に移動します。
nitishch 2015

@muru外部ツールを使いたくない。私が学んでいるのは、Vimコマンドを使用するだけでコードベースを効率的にナビゲートするための手法です。できることは知っていますが、私よりもVimに関する深い知識が必要です。それは非常にオープンエンドなので、おそらく良いSEの質問ではありませんが、他にどこを見ればよいのかわかりません。
user1332148

回答:


11

「検索を含める」はそのようなツールの1つです。

[I and ]I      " search current buffer and included files for
               " the word under the cursor, skipping comments
:ilist foo     " same as above but for 'foo'
:ilist /foo    " same as above but for a word containing 'foo'

「検索を含める」に関連して、「定義検索」も興味深いです。

[D and ]D      " search current buffer and included files for
               " the definition of the symbol under the cursor
:dlist foo     " same as above but for definition of 'foo'
:dlist /foo    " same as above but for a definition containing 'foo'

:dlist /       " list all definitions from the current buffer
               " and included files

どちらのツールも、ファイルタイププラグインによって設定される場合とされない場合があるさまざまなオプションに依存しています。

を参照してください:help include-search


また、使用することができるgdgDの軽量バージョンなど[D]D

を参照してください:help gd


現在のバッファで、以下のコマンドはすべての関数定義とその行番号をリストします:

:g/func/#

を参照してください:help :g


:grepそして:vimgrepその結果がでナビゲートすることができるQuickFixリストにのみ供給されているのであれば、も有用であり:cn:cp...と非常に便利なのQuickFixウィンドウに表示。

参照してください:help :grep:help :vimgrep:help quickfix


QuickFixリスト/ウィンドウといえば、私が書いたこの機能の結果を表示する(他人の仕事に基づいて)を[I]I:ilist[D]D:dlistQuickFixリスト/ウィンドウでを。もちろんYMMV。


厳密にはナビゲーションツールではありませんが、プレビューウィンドウは、使用している関数のシグネチャを確認するのに非常に役立ちます。

を参照してください:help preview-window


つまり…

Vimは、コーディングスタイルなどに適合しない可能性があるいくつかの正規表現パターンを超えて、コードについて何も知りません。つまり、コードナビゲーションは、ctags、cscope、GNU GLOBALなどの外部ツールを使用して行う方が適切です。


5

(Vimと外部に含まれている)コードをナビゲートする方法はたくさんありますが、私はまだそれらを発見しています。私が日常業務で使用するものは次のとおりです。

  • プロジェクトファイルのテキストをグレーピングし、quickfixウィンドウを介して移動します(グレーピングにはシルバーサーチャーを使用します)。
  • 言語関連のプラグインを使用して、プログラムのモジュール間をジャンプできるようにするjavascript、ruby、goのプラグインがあることを知っています(javascriptプラグインはgf-commandで)
  • Ctrl+OCtrl+I-ナビゲーションの「履歴」で前後にジャンプ
  • g; -ファイルの最後に編集された場所にジャンプします
  • 特定の場所に「ブックマーク」を配置するためのマークの使用。'[some_letter]コマンドでマークを付けることができます。文字が大文字の場合は、任意のファイル(バッファ)から到達可能なマークを取得できます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.