Existe-t-il un plugin ou un script pour ouvrir les entrées ctags dans un nouvel onglet ? J'aimerais mettre mon curseur sur une fonction, appuyer sur ctrl+] et avoir l'entrée ouverte dans un autre onglet. J'aimerais également pouvoir sélectionner visuellement une entrée, par ex. ctrl+] pour continuer à fonctionner et s'ouvrir dans un nouvel onglet vim.
Réponses
Trop de publicités?Vous pouvez
C-wC-]C-wT
Pour obtenir cet effet
Alors vous pouvez aussi le cartographier :
:nnoremap <silent><Leader><C-]> <C-w><C-]><C-w>T
Editar: également, en fonction de ce que vous voulez réellement, n'oubliez pas que vous pouvez ouvrir les balises dans l'aperçu ( :ptag
) avec par exemple C-w} . Je le mentionne juste au cas où...
Voici deux mappings 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-]>
Tout d'abord, nous ouvrons le tampon actuel dans un nouvel onglet ; puis nous essayons de sauter à 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).
Pour :
Cons :
- si vous quittez la liste des correspondances sans en choisir aucune, l'onglet nouvellement créé restera ouvert
- il en va de même s'il n'y a pas de correspondance.
P.S. Pourriez-vous fournir un cas d'utilisation de la cartographie visuelle des modes de transport ?
P.P.S. Si vous générez des balises avec cscope (ce qui est mieux que ctags
) et utiliser son mappings vim remplacez les mappings ci-dessus par les suivants :
nnoremap <C-]> :tabnew %<CR><C-]>
vnoremap <C-]> <Esc>tabnew %<CR>gv<C-]>
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 la balise :tab nom de la fonction
Au cas où quelqu'un chercherait encore une solution. Avec cette solution, lorsqu'aucune balise n'est trouvée, il n'y a 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