En vim, ¿cómo puedo cambiar rápidamente entre pestañas?


126

En gnome-terminal, puedo simplemente pulse Alt+ ( 1, 2, 3, etc.) para cambiar a lengüetas específicas. También puedo usar Ctrl+ ( PgUp/ PgDn) para recorrer las pestañas (es cierto que es menos conveniente, pero se puede reasignar).

Si quiero usar pestañas vim en lugar de pestañas gnome-terminal, escribir :tabny :tabpes bastante engorroso. Podría asignarlos a métodos abreviados de teclado, pero eso es mucho menos conveniente que saltar directamente a la pestaña 4 con Alt+ 4.

¿Hay una forma más rápida de cambiar entre pestañas en vim?

Respuestas:


210

Siguiente pestaña: gt

Pestaña anterior: gT

Pestaña numerada: nnngt


1
Sé que podría escribir nnn g t, pero quiero hacerlo rápidamente , es decir, Alt + nnno Ctrl + nnn. Pero Alt + nya está tomado por gnome-terminal, y la unión a Ctrl + nno parece tener ningún efecto.
Mateo

66
¿Qué pasa con la asignación de teclas de función nnn g t? Ej :map <F2> 2gt. Existe el problema que a <F1>menudo GNOME asigna a su servicio de ayuda. O usted podría optar por alguna clave no se utiliza a menudo en modo normal, decir la coma, y el mapa de esta manera: :map , gt. Luego 1,lo llevará a la pestaña 1, 2,a la pestaña 2, y así sucesivamente.
garyjohn

2
Me pareció muy conveniente usar '<' y '>'
Igor Stoppa

Desplácese hacia abajo para obtener una mejor respuesta ..
The Vivandiere

41

¿Por qué no hacer uso de su líder (mi líder está asignado a 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>

Puede usar la configuración a continuación para alternar entre la pestaña activa actual y la última (aquí se asigna a Ctrl+ L, es decir, <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>

2
Es necesario au TabLeave * let g:lasttab = tabpagenr()para c-ltrabajar: stackoverflow.com/questions/2119754/...
Ciro Santilli新疆改造中心法轮功六四事件

1
Agregaría <leader>h/lpara gTygt
Brenden

25

Esta es la forma más fácil que encontré, para cambiar entre pestañas más rápido y simple.
Agregue las siguientes líneas a su .vimrc y disfrútelo, más trucos sobre las pestañas vim aquí .

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

Ahora puedes usar Ctrl para ir a la izquierda y Ctrl a la derecha.

O simplemente use:
1gtpara ir a la pestaña uno,
2gtpara ir a la pestaña dos,
3gtpara ir a la pestaña tres, etc. Ahora tiene la idea.


Creo que esta es la mejor respuesta aquí. Muy conveniente tener. Acabo de deshabilitar esas combinaciones de teclas del sistema en OS X para que sean independientes del sistema.
Léo Léopold Hertz 준영

1
Usar las teclas de flecha lo retrasará. Los tengo deshabilitados
Pregunte y aprenda

Sí ... ¡La mejor respuesta!
The Vivandiere

Lamentablemente "Ctrl" me dio problemas en vmplayer, así que cambié a las teclas "Retroceso" y "Enter".
Boris Däppen

Usuarios de Mac: es posible que deba deshabilitar los atajos de teclado predeterminados de espacios de Control de misión: stackoverflow.com/questions/15719135/…
azatar

15

Como estoy en una Mac y no estoy usando MacVim (pero vim simple dentro de una terminal) he tenido algunas dificultades con las combinaciones de teclas que no se envían a la terminal.

La forma más compatible (y para mí más cómoda) de cambiar de pestaña rápidamente proviene del sitio Vim Wikia .

Colocar en su .vimrcarchivo:

nnoremap H gT
nnoremap L gt

Ahora Shift-h(capital H) y Shift-l(L mayúscula) se cambiará rápidamente entre pestañas, y sigue la convención de que he lcorresponden a izquierda y derecha en vim en un teclado QWERTY normal.


Me encanta esta solución, intuitiva y vim. No se necesitan teclas de flecha.
Ivan Ivković

Estoy de acuerdo. Una muy buena solución
j triste

Esta es realmente una solución intuitiva. ¡Gracias!
LeOn - Han Li

2

(Desafortunadamente) vim también usa CtrlPgDn/ PgUppara recorrer las pestañas. Tendrá que usar mappara asignar tabn/ tabpa algo utilizable.


2

Si está utilizando gvim o similar (es decir, algo fuera del terminal), puede imitar el gnome-terminalcomportamiento que describe con:

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

Entonces alt-1salta a la primera pestaña, etc. Pero alt-9salta a la última pestaña (como en Chrome).

Es posible que desee envolver esto if has("gui_running")(aunque esto no parece funcionar con Neovim), o poner esto .gvimrc.


2

Agregue estos a .vimrc para habilitar las teclas de acceso rápido de navegación de pestañas:

<ctrl-l> alternar entre las 2 pestañas más recientes;

<ctrl-j/k> Ir a la última / siguiente pestaña;

<ctrl-t> Abre una nueva pestaña.

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


¿Es posible asignar <Ctrl> - <Tab> a la última función de alternar pestaña. Lo he intentado nnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>y vnoremap <silent> <C-Tab> :exe "tabn ".g:lasttab<cr>sin suerte.
zzeroo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.