web-dev-qa-db-ja.com

Vim:(クラス、メソッド、関数、変数などの)宣言に移動する方法

現在、多くのクラス、メソッド、関数、変数などを使用するファイルに取り組んでいます。それらすべての宣言に移動することは可能ですか?これらの宣言の一部は同じファイルにありますが、他のファイルは他のファイルにあることを考慮に入れてください(開いていない可能性があり、宣言の場所はわかりませんが、宣言は存在します)。宣言がディレクトリの1つ上のレベルの場合はどうなりますか?それが1レベル下にある場合はどうでしょうか?

これは、話しているプログラミング言語に応じて異なる方法で行われますか、それとも宣言を見つける手順は言語に関係なく同じですか?

私は読んでおり、解決策はタグに関連しているようです。ただし、これがどのようにして実現できるか(段階的に)を知りたいのですが、特に、他のファイルの定義について話している場合があることを考慮に入れています。

これはIDEで実行できることはわかっていますが、vimでこれがどの程度異なるのかを知りたいのです。

私はVimのフレッシュインストールしか持っていません。プラグインはまだインストールしていませんが、必要に応じてインストールします。おそらく、これはプラグインの有無にかかわらず行うことができます。

前もって感謝します!

30
pablofiumara

tagsの設定はそれほど難しくありませんが、(Vimのほとんどの場合と同様に)IDEに比べて自動化は簡単ではありません。

  1. まず、ctagsツールが必要です。今日最も一般的なのは、ctags.sourceforge.net にある(== --- ==)Exuberant Ctagsです。
  2. 次に、プロジェクト内のすべてのファイルのタグデータベース(ファイル名tags)を作成する必要があります。これは通常、プロジェクトルートからctags -R .を実行することで行われます(:!ctags ...を介してVim内からも)。熱狂的なCtagsは 41言語 をサポートし、正規表現を使用して拡張することもできます。
  3. 最後に、Vimはtagsデータベースを取得するように設定する必要があります。 :set tags=./tags;を使用すると、ファイルのディレクトリからルートディレクトリまで検索されます。特定のグローバルインクルードディレクトリがある場合は、それらを追加できます。
  4. これで、<C-]>:tagなどのVimのタグ機能を使い始めることができます。

タグデータベースを定期的に更新する必要があります; easytags.vim のようなプラグインがあり、自動的に実行できます。

25
Ingo Karkat

あなたはGdを試すことができます、それはローカル宣言に行きます、より強力な「定義に行く」ために、あなたはIngoが示唆したようにtagsを試すことを望むかもしれません。

6
Philia Fan