0

taglistVIM でプラグインを使用する場合、 + を使用しCtrl]グローバル変数または関数にジャンプできます。ただし、変数がローカルの場合、タグで見つけることができません。このリンクから、 を使用してローカル変数にジャンプできること、gdまたは を使用してグローバル変数にジャンプできることがわかりましたgD

これは taglist コマンドの範囲外なので、Ctrl+tを使用してジャンプした場所に戻ることはできません。

taglistタグが見つからない場合にローカル変数にジャンプするように拡張することは可能ですか? そして、スタックを使用して、ジャンプ元の場所に戻りますか?

4

1 に答える 1

1

これがマッピングです。Taglist プラグインは実際にはそのようなものを定義していないため (現在のバッファのタグを表示し、タグを設定するだけです)、それとの統合は必要ありません。

nnoremap <silent> <C-]> :<C-u>let pos = [bufnr('')] + getpos('.')<Bar>execute 'normal!' (v:count ? v:count : '') . "\<lt>C-]>"<CR>:if pos == [bufnr('')] + getpos('.')<Bar>execute 'normal! gd'<Bar>endif<CR>

これは、最初に現在のバッファとカーソル位置を記録し、次に通常のタグ ジャンプを実行しようとします。位置が変更されていない場合は、コマンドに戻りgdます。ああ、実際には位置を確認する必要はなく、try...catch代わりに使用できます。バージョン 2:

nnoremap <silent> <C-]> :<C-u>try<Bar>execute 'normal!' (v:count ? v:count : '') . "\<lt>C-]>"<Bar>catch /^Vim\%((\a\+)\)\=:E426:/<Bar>execute 'normal! gd'<Bar>endtry<CR>
于 2016-09-12T14:04:16.040 に答える