Existe-t-il un plugin ou un script pour ouvrir les entrées ctags dans un nouvel onglet? Je voudrais placer mon curseur sur une fonction, appuyer sur ctrl +] et ouvrir l'entrée dans un autre onglet. J'aimerais également que je sélectionne visuellement une entrée, pour que ctrl +] fonctionne toujours et s'ouvre dans un nouvel onglet vim.
Vous pouvez
C-wC-]C-wT
Pour obtenir cet effet
Ensuite, vous pouvez également cartographier cela:
:nnoremap <silent><Leader><C-]> <C-w><C-]><C-w>T
Edit: également, selon ce que vous voulez réellement, n'oubliez pas que vous pouvez ouvrir des balises dans l'aperçu (:ptag
) avec par exemple C-w}. Je le mentionne juste au cas où ...
Voici deux jolies correspondances ad-hoc (au cas où vos balises sont générées par ctags
):
nnoremap <C-]> :tabnew %<CR>g<C-]>
vnoremap <C-]> <Esc>:tabnew %<CR>gvg<C-]>
D'abord, nous ouvrons le tampon actuel dans un nouvel onglet; puis nous essayons de passer à une balise sous le curseur (g<C-]>
, qui est égal à :tjump
, passe directement à la balise s'il n'y a qu'une seule correspondance, ou fournit une liste de correspondances s'il y en a plusieurs).
Avantages:
Les inconvénients:
P.S. Pourriez-vous fournir un cas d'utilisation pour la cartographie du mode visuel?
P.P.S. Si vous générez des balises avec cscope (ce qui est mieux que ctags
) et utilisez ses mappages vim , remplacez les mappages ci-dessus par les suivants:
nnoremap <C-]> :tabnew %<CR><C-]>
vnoremap <C-]> <Esc>tabnew %<CR>gv<C-]>
Au cas où quelqu'un chercherait toujours une solution. Sur cette solution lorsqu'aucune balise n'est trouvée, il ne restera plus d'onglet vide.
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
Vous pouvez configurer un raccourci clavier, 'g' suivi de CONTROL-], dans ~/.vimrc comme suit:
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>
Vous pouvez tester "tab ta" via: tab tab functionname