web-dev-qa-db-ja.com

Vimで複数のctagsマッチをナビゲートする方法は?

私は使っています Ctrl-] VimでCtagsを使用してナビゲートします。複数の一致がある場合、代替ファイルに移動するにはどうすればよいですか?

something.publishは、publishの複数のオカレンスを含むコードベースで:

class Foo
  def publish
  end
end

class Bar
  def publish
  end
end
51
Sathish

:tn[ext]は次のタグに移動します、:tp[revious]は前のものに移動します。 :ts[elect]は、選択するリストを提供します。

:help tag-matchlistより楽しくてエキサイティングなことを試してみてください!

71
dash-tom-bang

使用する g] の代わりに C-]すべての一致のリストを取得します。

:help g]

107
Dmitry Frank

他の人に役立つ場合に最終的に探していた答えを追加:

g<C-]>は、一致するものが1つしかない場合はタグにジャンプし、複数の一致がある場合はリストを表示します。

このマッピングを.vimrcに追加して、デフォルトで必要なことを実行できるようにしました。

nnoremap <C-]> g<C-]>

17
Ross Hambrick

ltag

ltag the_tag_name
lopen

タグが一致する場所ウィンドウを開きます。

これは、正規表現のタグ検索で特に強力です。

ltag /tag_na
lopen

文字列tag_na(したがってthe_tag_nameを含む)を含むすべてのタグがリストされます。

Enterキーを押してタグにジャンプする前に、場所リスト内をさらに検索できます。

カーソルの下のWordに使用するには、マップを定義する必要があります。

nnoremap <leader>l exec("ltag ".expand("<cword>"))<CR>

そして、あなたが私のようなタブマニアなら:

command! -nargs=1 Ltag silent ltag <args> | execute "normal \<C-o>" | tab lopen

タブに直接ジャンプする代わりに、場所リストとすべての一致を含む新しいタブを開きます。

:Ltag /my_struct