235 votes

Existe-t-il une commande de vim de déplacer un onglet ?

Par exemple, je veux repositionner mon onglet actif pour être le premier onglet.

323voto

maybeshewill Points 375

Vous pouvez déplacer un onglet avec `` à l’aide des arguments absolues soit relatives ou zéro-index.

absolue :

  • Déplacer l’onglet sur la position i :``

relative :

  • Déplacer l’onglet je positionne à droite :``
  • Déplacer l’onglet je positionne à gauche :``

C’est une fonctionnalité relativement nouveau. Alors si cela ne fonctionne pas essayez de mettre à jour votre vim.

43voto

hochl Points 5353

Entendez-vous le déplacement de l'onglet actuel? Cela fonctionne à l'aide de tabmove.

:tabm[ove] [N]                                          *:tabm* *:tabmove*
            Move the current tab page to after tab page N.  Use zero to
            make the current tab page the first one.  Without N the tab
            page is made the last one.

J'ai deux raccourcis qui se déplacent de mon onglet de gauche ou celle de droite. Très pratique!

EDIT: Voici mon VIM macro. Je ne suis pas un grand ViM codeur, donc peut-être qu'il pourrait faire mieux, mais c'est la façon dont il fonctionne pour moi:

" Move current tab into the specified direction.
"
" @param direction -1 for left, 1 for right.
function! TabMove(direction)
    " get number of tab pages.
    let ntp=tabpagenr("$")
    " move tab, if necessary.
    if ntp > 1
        " get number of current tab page.
        let ctpn=tabpagenr()
        " move left.
        if a:direction < 0
            let index=((ctpn-1+ntp-1)%ntp)
        else
            let index=(ctpn%ntp)
        endif

        " move tab page.
        execute "tabmove ".index
    endif
endfunction

Après cela, vous pouvez lier des clés, par exemple comme ceci dans votre .vimrc:

map <F9> :call TabMove(-1)<CR>
map <F10> :call TabMove(1)<CR>

Maintenant, vous pouvez déplacer votre onglet en appuyant sur F9 ou F10.

26voto

Pablo Díaz Ogni Points 651

Je cherchais la même chose et après quelques messages, j’ai trouvé un moyen plus simple qu’une fonction :

Le tabpagenr() renvoie la position de la tabulation, et tabmove utilise les index.

J’ai tracé la droite Ctrl + l et la gauche Ctrl + h :

4voto

Jim Stewart Points 6811

En plus de l'amende suggestions dans d'autres réponses, vous pouvez aussi simplement faire glisser un onglet avec la souris pour les déplacer, si vous avez le support de la souris est activé.

Il est activé par défaut dans MacVim et d'autres GUI vim mises en œuvre, que ce soit en utilisant l'interface graphique widget onglets ou le terminal onglet style en mode graphique.

Il travaille aussi dans le plus pur mode tty Vim, si vous avez set mouse=a et de terminal (xterm et la plupart des émulateurs, comme gnome-temrinal, Terminal.app, iTerm2, et de Mastic/KiTTY, pour désigner un point de vue). Notez que les clics de la souris au-delà de la colonne 222 également exiger set ttymouse=sgr; voir Vim problème de souris pour l'arrière-plan.

J'ai écrit un plugin appelé vim-tabber qui fournit des fonctionnalités supplémentaires pour échanger des onglets autour, de les déplacer, et l'ajout de fonctionnalités intégrées dans l'onglet commandes de manipulation, tout en restant largement compatible avec les objets internes. Même si vous choisissez de ne pas utiliser le plugin, il y a certaines onglet général l'utilisation de l'information dans le fichier README.

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