web-dev-qa-db-fra.com

Dans vim, comment puis-je basculer rapidement entre les onglets?

Dans gnome-terminal, je peux simplement appuyer sur Alt + (123, etc.) pour passer à des onglets spécifiques. Je peux aussi utiliser Ctrl + (PgUp / PgDn) pour parcourir les onglets (certes moins pratique, mais il peut être remappé).

Si je veux utiliser les onglets vim au lieu des onglets gnome-terminal, taper :tabn et :tabp est assez fastidieux. Je pouvais les mapper sur des raccourcis clavier, mais c’est toujours beaucoup moins pratique que de sauter directement à l’onglet 4 avec Alt + 4.

Existe-t-il un moyen plus rapide de basculer entre les onglets dans vim?

119
Matthew

Onglet suivant: gt

Onglet précédent: gT

Onglet numéroté: nnngt

196
ephemient

Pourquoi ne pas utiliser votre chef (mon chef est sur Space):

" Go to tab by number
noremap <leader>1 1gt
noremap <leader>2 2gt
noremap <leader>3 3gt
noremap <leader>4 4gt
noremap <leader>5 5gt
noremap <leader>6 6gt
noremap <leader>7 7gt
noremap <leader>8 8gt
noremap <leader>9 9gt
noremap <leader>0 :tablast<cr>

Vous pouvez utiliser les paramètres ci-dessous pour basculer entre l’onglet actif en cours et le dernier onglet actif Ctrl+L, i.e., <c-l>):

" Go to last active tab

au TabLeave * let g:lasttab = tabpagenr()
nnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>
vnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>
39
unblevable

C’est le moyen le plus simple que j’ai trouvé de basculer entre les onglets plus rapidement et plus simplement.
Ajoutez les lignes suivantes à votre fichier .vimrc et profitez-en, plus d’astuces sur les vim tabs ici .

nnoremap <C-Left> :tabprevious<CR>
nnoremap <C-Right> :tabnext<CR>

Maintenant vous pouvez utiliser Ctrl aller à gauche et Ctrl aller à droite.

Ou simplement utiliser:
1gt aller à l'onglet un,
2gt aller à l'onglet deux,
3gt aller à l'onglet trois, etc ... maintenant vous avez l'idée.

21

Comme je suis sur un Mac et n'utilise pas MacVim (mais simplement vim dans un terminal), j'ai eu quelques difficultés avec les combinaisons de touches non envoyées au terminal.

Le moyen le plus compatible (et le plus confortable pour moi) de changer d’onglet rapidement vient du site Vim Wikia .

Placez dans votre fichier .vimrc:

nnoremap H gT
nnoremap L gt

Désormais, Shift-h (majuscule H) et Shift-l (majuscule L) vous permuteront rapidement entre les onglets et suivront la convention voulant que h et l correspondent à gauche et à droite dans vim sur un clavier qwerty standard.

11
Stefan Magnuson

(Malheureusement) vim utilise aussi CtrlPgDn/PgUp faire défiler les onglets. Vous devrez utiliser mappour mapper tabnname __/tabpà quelque chose d’utilisable.

1

Ajoutez-les à .vimrc pour activer les touches de raccourci:

<ctrl-l> bascule entre les 2 derniers onglets;

<ctrl-j/k> aller au dernier/prochain onglet;

<ctrl-t> ouvre un nouvel onglet.

" tab navigation: Alt or Ctrl+Shift may not work in terminal: " http://vim.wikia.com/wiki/Alternative_tab_navigation " Tab navigation like Firefox: only 'open new tab' works in terminal nnoremap <C-t> :tabnew<CR> inoremap <C-t> <Esc>:tabnew<CR> " move to the previous/next tabpage. nnoremap <C-j> gT nnoremap <C-k> gt " Go to last active tab au TabLeave * let g:lasttab = tabpagenr() nnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr> vnoremap <silent> <c-l> :exe "tabn ".g:lasttab<cr>

0
Mengqi Ji

Si vous utilisez gvim ou un logiciel similaire (c'est-à-dire quelque chose en dehors du terminal), vous pouvez imiter le comportement gnome-terminal que vous décrivez avec:

" Map alt-x keys to jump to a tab
for i in range(1, 8)
  execute "nmap \<M-" . i . "> " . i . "gt"
endfor
nmap <M-9> :tablast<CR>

Donc, alt-1 passe au premier onglet, etc. Mais alt-9 passe au dernier onglet (comme dans Chrome).

Vous voudrez peut-être envelopper ceci dans if has("gui_running") (bien que cela ne semble pas fonctionner avec Neovim), ou le mettre dans .gvimrc.

0
Joe Freeman