web-dev-qa-db-ja.com

vim:新しいタブでタグを開く

新しいタブでctagsエントリを開くプラグインまたはスクリプトはありますか?関数の上にカーソルを置き、Ctrl +]キーを押して、エントリを別のタブで開きます。エントリを視覚的に選択して、ctrl +]が引き続き機能し、新しいvimタブで開くようにしたいのですが。

55
Paul Tarjan

あなたはできる

C-wC-]C-wT

その効果を達成するために

次に、それをマッピングすることもできます。

:nnoremap <silent><Leader><C-]> <C-w><C-]><C-w>T

編集:また、実際に必要なものに応じて、プレビューでタグを開くことができることを忘れないでください(:ptag)例: C-w}。念のために言っておきます...

85
sehe

ここに2つのかなりアドホックなマッピングがあります(タグがctagsによって生成された場合):

nnoremap <C-]> :tabnew %<CR>g<C-]>
vnoremap <C-]> <Esc>:tabnew %<CR>gvg<C-]>

まず、現在のバッファを新しいタブで開きます。次に、カーソルの下のタグにジャンプしようとします(g<C-]>、これは:tjumpと同じです。一致が1つだけの場合はタグに直接ジャンプします。一致が多数の場合は一致のリストを提供します)。

長所:

短所:

  • 何も選択せずに一致のリストを終了すると、新しく作成されたタブは開いたままになります
  • 一致がまったくない場合も同様です

追伸ビジュアルモードマッピングの使用例を提供できますか?

P.P.S. cscopectagsより優れている)でタグを生成し、その vimマッピング を使用する場合は、上記のマッピングを次のマッピングに置き換えます。

nnoremap <C-]> :tabnew %<CR><C-]>
vnoremap <C-]> <Esc>tabnew %<CR>gv<C-]>
5
dorserg

誰かがまだ解決策を探している場合。このソリューションでは、タグが見つからない場合、空白のタブは残りません。

function! w:GoToTag(tagWord)

    let l:tagfile = &tags
    :tabe
    execute 'set tags=' . l:tagfile
    execute ':silent tjump ' . a:tagWord

    let l:tagFilename = expand('%:t')

    if l:tagFilename == ''
        :tabclose
        :tabprevious
    endif
endfunction
2
notmii

次のように、〜/ .vimrcにキーボードショートカット 'g'の後にCONTROL-]を設定できます。

nmap g<C-]> :execute 'tab tag '.expand('<cword>')<CR>

nmap       means 'when in normal mode'
g<C-j>     is the shortcut, 'g' followed by CTRL-]
execute    is a means of executing a command passed as a string
tab tag    means "open a new tab and run 'ta'"
expand     is used to expansion of a vim item
<cword>    means a Word the same as used for '*'. See also <cWORD>

:tabタグで "tab ta"をテストできますfunctionname

1