Atajo para cambiar pestañas en MacVim


16

¿Hay atajos para cambiar las fichas de uno a otro en MacVim?

Pestañas MacVim

¿Algún consejo para los accesos directos se unen a mí mismo en .vimrc como ⌘ + 1 para Tab 1 y 2 para ⌘ + Tab 2. Por ejemplo, como cambiar las pestañas del navegador.

Respuestas:


17

Dado que MacVim es un programa real en Mac OS, puede asignar la conmutación de pestañas de la misma manera que asigna comandos en cualquier programa (que personalmente aprendí recientemente).

Abra Preferencias del sistema, seleccione "Teclado", luego "Accesos directos a aplicaciones" (en el menú de la izquierda). Debajo del menú a la derecha, haga clic en el signo más (+) para agregar un nuevo comando. Elija MacVim para la aplicación y para el título del menú, escriba "Seleccionar siguiente pestaña" y elija un acceso directo (elegí Cmd + flecha derecha). Luego haga lo mismo para el comando "Seleccionar pestaña anterior".

"Seleccionar siguiente pestaña" y "Seleccionar Anterior Tab" se encuentran en MacVim en el menú "Ventana". Cualquier opción que vea en cualquiera de los menús para una aplicación puede reasignarse utilizando este método.


1
Como la pregunta era sobre Macvim, esta solución es mejor. Lo único es que cuando desee portar su .vimrc a otras máquinas, esto puede no funcionar allí, pero aún así prefiero esto. Gracias.
dientes de sable

En Windows / Linux, asigno Alt + 1 ... 10 al orden de tabulación. Sería bueno tener comando + 1 Ir a la primera pestaña, como lo es para todos y cada otra aplicación en los Macs. ¿Alguna manera de hacer eso? El menú para eso es "Buffer >> <nombre de archivo> (1)"
gcb

20

Por supuesto, puede cambiar los accesos directos con las preferencias del sistema OSX para su teclado como se muestra aquí: Cómo reasignar cualquier acceso directo de teclado en Mac OS X

Algunos podrían preferir hacerlo a través de .vimrc:

if has("gui_macvim")
  " Press Ctrl-Tab to switch between open tabs (like browser tabs) to 
  " the right side. Ctrl-Shift-Tab goes the other way.
  noremap <C-Tab> :tabnext<CR>
  noremap <C-S-Tab> :tabprev<CR>

  " Switch to specific tab numbers with Command-number
  noremap <D-1> :tabn 1<CR>
  noremap <D-2> :tabn 2<CR>
  noremap <D-3> :tabn 3<CR>
  noremap <D-4> :tabn 4<CR>
  noremap <D-5> :tabn 5<CR>
  noremap <D-6> :tabn 6<CR>
  noremap <D-7> :tabn 7<CR>
  noremap <D-8> :tabn 8<CR>
  noremap <D-9> :tabn 9<CR>
  " Command-0 goes to the last tab
  noremap <D-0> :tablast<CR>
endif

1
¡Gracias, prefiero esta solución a la seleccionada porque uso el comando derecha | flecha izquierda para ir al final / principio de las líneas!
Brian Underwood

1
¿Cómo podría uno hacer que esto funcione en modo de inserción?
Oliver Joseph Ash

¡Esto es más que hermoso! ¡Gracias! 🙏
Nik

12

Puede seleccionar la pestaña siguiente con + }y seleccionar la pestaña anterior con +{

Se requiere la tecla Mayús para no solo presionar un en [lugar de un }
Entonces, el acceso directo es + shift+ ]o + shift+ [
Este acceso directo funciona en muchas aplicaciones, es decir, en la Terminal


Esto no es lo que el OP está pidiendo ... la pregunta era cambiar las pestañas en MacVim, no en la terminal
JESii

2
Pero esto ES un atajo de teclado MacVim. Las teclas de comando no se traducen en terminal vim.
spoulson

Estoy usando MacVim y, como se menciona en esta solución, ya tiene comandos de teclado para cambiar de pestaña. Simplemente me faltaba la tecla <kbd> Shift </kbd> cuando hacía <kbd> ⌘ </kbd> + <kbd>} </kbd>.
brettlyman

5

Tengo lo siguiente en mi ~ / .vimrc para Linux. Debería poder cambiar la " <M-" secuencia a " <D-" para obtener lo que desea:

" Meta+1-0 jumps to tab 1-10, Shift+Meta+1-0 jumps to tab 11-20:
let s:windowmapnr = 0
let s:wins='1234567890!@#$%^&*()'
while (s:windowmapnr < strlen(s:wins))
    exe 'noremap <silent> <M-' . s:wins[s:windowmapnr] . '> ' . (s:windowmapnr + 1) . 'gt'
    exe 'inoremap <silent> <M-' . s:wins[s:windowmapnr] . '> <C-O>' . (s:windowmapnr + 1) . 'gt'
    exe 'cnoremap <silent> <M-' . s:wins[s:windowmapnr] . '> <C-C>' . (s:windowmapnr + 1) . 'gt'
    exe 'vnoremap <silent> <M-' . s:wins[s:windowmapnr] . '> <C-C>' . (s:windowmapnr + 1) . 'gt'
    let s:windowmapnr += 1
endwhile
unlet s:windowmapnr s:wins

3

Además de hacer sus propias asignaciones, no están incorporados en los atajos de vim. Pruebe con un número seguido gt. Por ejemplo: 3gtle lleva a la tercera pestaña. También puede hacerlo solo gtpara ir a la siguiente pestaña, o gTpara ir a la anterior.

(Desde vim 7.algo, las pestañas se han horneado incluso en la versión sin gvim en modo texto).


¡Perfecto! La forma nativa de hacer esto; Gracias.
JESii
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.