2016-09-12 4 views
0

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

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

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

+1

きっとあなたは(そう、あなたの質問への答えは「YES」である)パッチとして、しかし、これはコアタグ機能はないので、プラグインの作者が包含のためにそれを受け入れないことを実装することができます。 –

+0

@IngoKarkatあなたはこのパッチをどのように開発することができますか? 'Ctrl' +'] 'キーの動作をオーバーライドする必要があります – Raj

+0

まず、' 'はタグリストプラグインとは何ら関連していません。 2番目に、 ''はどのファイルであっても、最初に一致するタグにジャンプします。あなたがジャンプするファイルを選択できるようにするには、 'g ''を試してください。 – romainl

答えて

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> 
+0

正確には私が望んでいたものではありませんが、かなり近いです。ソリューションに感謝します。 – Raj