関数定義タグからプロトタイプタグへのジャンプ


7

私が理解している限り、Vimにはタグのサポートが組み込まれています(ctagsこの場合)。

これで、共通のCソースとCヘッダーファイルができました。ヘッダーファイルにはがvoid foo(void);あり、ソースファイルにはがありvoid foo(void) { /* */ }ます。

これで、ソースファイル内でを使用でき:tags fooます。これにより、ソースファイル内の関数定義にジャンプします。しかし、今使用する:tnextと、ヘッダーファイルの関数宣言にジャンプしません。

なんとなく可能だと思います。それは...ですか?


1
(どうやって)走ったのctags?また、も参照してください:h gD
VanLaser 2016年

私は走ったところctags -R、それは間違いだった
hgiesel 16/12/16

回答:


6

わかりました。

それはすべてと関係がありctagsます:最初に呼ばれる2つのファイルを作成しfoo.c、それfoo.hをテストするには:foo.h書き留めて:

int bar(void);

ではfoo.c、書き込みダウン:

int bar(void) { /* */ }

そして、これら2つのファイルがあるディレクトリで、次のコマンドを実行します。

ctags --list-kinds

タグの種類がある言語の長いリストが表示されます。Cを見つけます。次の行に注意してください。

p関数プロトタイプ[オフ]

私はそれを関数宣言と呼びますが、とにかく。したがって、実行時に関数プロトタイプのタグをアクティブにする必要がありますctags。これを行うには、次を呼び出します。

ctags -R --c-kinds=+p

同じことが他の言語にも当てはまることに注意してください。例:

ctags -R --java-kinds=+l

これでfoo.cvim foo.c)を開いて入力でき:tag barます。関数の定義が表示されます。入力する:tnextfoo.h、の宣言にジャンプしますbar

ただし、それctagsが正しさを気にしないことにも注意してください。たとえば、ヘッダーファイルをインクルードしてbarいないため、宣言はの定義にも適用できませんでしたbar

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.