65 votes

vim : Ouvrir la balise dans un nouvel onglet

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.

101voto

sehe Points 123151

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ù...

6voto

dorserg Points 952

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-]>

3voto

Malcolm Boekhoff Points 141

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

3voto

notmii Points 89

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X