Questão No vim, como posso alternar rapidamente entre as guias?


No gnome-terminal, posso apenas pressionar Alt + (1, 2, 3, etc.) para alternar para guias específicas. Eu também posso usar Ctrl + (PgUp / PgDn) para percorrer as guias (reconhecidamente menos conveniente, mas pode ser remapeada).

Se eu quiser usar as guias vim em vez das guias do terminal gnome, digite :tabn e :tabp é bastante complicado. Eu poderia mapeá-los para atalhos de teclado, mas isso ainda é muito menos conveniente do que saltar diretamente para a guia 4 com Alt + 4.

Existe uma maneira mais rápida de alternar entre as guias no vim?


92


origem




Respostas:


Guia Próxima: gt

Guia anterior: gT

Guia numerada: nnngt


155



Eu sei que eu poderia digitar nnn  g  tmas eu quero fazer rapidamente, isto é Alt + nnn ou Ctrl + nnn. Mas Alt + n já é tomado pelo gnome-terminal, e vinculativo para Ctrl + n não parece ter nenhum efeito. - Matthew
E sobre as teclas de função de mapeamento para nnn  g  t? Por exemplo., :map <F2> 2gt. Existe o problema que <F1> é frequentemente mapeado pelo GNOME para sua facilidade de ajuda. Ou você pode escolher alguma chave que você não usa frequentemente no modo normal, digamos a vírgula, e mapeá-la assim: :map , gt. Então 1, levará você para a guia 1, 2, para a guia 2 e assim por diante. - garyjohn
Eu achei muito conveniente usar '<' e '>' - Igor Stoppa
Role para baixo para uma resposta melhor .. - The Vivandiere


Por que não usar seu líder (meu líder é mapeado para Espaço):

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

Você pode usar as configurações abaixo para alternar entre a guia ativa atual e a última (aqui ela é mapeada para Ctrl+eu, isto é, <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>

32



Você precisa au TabLeave * let g:lasttab = tabpagenr() para c-l trabalhar: stackoverflow.com/questions/2119754/… - Ciro Santilli 新疆改造中心 六四事件 法轮功
Eu adicionaria <leader>h/l para gT e gt - Brenden


Essa é a maneira mais fácil que encontrei de alternar entre as guias de maneira mais rápida e simples.
Adicione as próximas linhas ao seu .vimrc e divirta-se, mais truques sobre as guias do vim Aqui.

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

Agora você pode usar Ctrl   para ir para a esquerda e Ctrl   ir para a direita

Ou apenas use:
1gt para ir para o guia um,
2gt para ir para o separador dois,
3gt para ir para a aba 3, etc ... agora você tem a ideia.


12



Eu acho que esta é a melhor resposta aqui. Muito conveniente ter. Eu apenas desabilitei as teclas de atalho do sistema no OS X para torná-las independentes do sistema. - Léo Léopold Hertz 준영
Use as teclas de seta para atrasá-lo. Eu os tenho desativado - Ask and Learn
Sim ... Melhor resposta! - The Vivandiere
Infelizmente "Ctrl" me deu problemas no vmplayer, então mudei para as teclas "Backspace" e "Enter". - Boris Däppen
Usuários de Mac: você pode precisar desabilitar os atalhos de teclado dos Espaços de Controle da Missão: stackoverflow.com/questions/15719135/… - toszter


Como estou em um Mac e não estou usando o MacVim (mas o vim simples dentro de um terminal) tive algumas dificuldades com as combinações de teclas que não foram enviadas para o terminal.

A maneira mais compatível (e mais confortável para mim) de trocar de abas rapidamente vem do Site Vim Wikia.

Coloque na sua .vimrc Arquivo:

nnoremap H gT
nnoremap L gt

Agora Shift-h (capital H) e Shift-l (capital L) alternará rapidamente entre as guias e seguirá a convenção de que h e l corresponde à esquerda e à direita no vim em um teclado qwerty regular.


9





(Infelizmente) o vim também usa CtrlPgDn/PgUp para percorrer as guias. Você precisará usar map mapear tabn/tabp para algo utilizável.


1





Se você estiver usando gvim ou similar (ou seja, algo fora do terminal), você pode imitar o gnome-terminal comportamento que você descreve com:

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

assim alt-1 pula para a primeira aba, etc. alt-9 pula para a última guia (como no Chrome).

Você pode querer envolver isso if has("gui_running") (embora isso não pareça funcionar com Neovim), ou colocar isso em .gvimrc.


0





Aqui estão alguns mapeamentos fáceis para o seu .vimrc:

nnoremap <C-h> :tabprev
nnoremap <C-l> :tabnext

Prós:

  • Não se move da linha inicial (eu troco ctrl e caps lock)
  • Reutiliza as teclas "esquerda" e "direita"
  • Parece semelhante a mudar de abas do navegador

0