Cómo saltar al principio o al final de la línea en vim + OS X

17

En la terminal, puedo hacer esto presionando shift + home y shift + end, pero no parece funcionar en vim. Las teclas de inicio y fin solo desplazan la ventana del terminal. Me gustaría saltar en el modo de edición.

JtR
fuente
44
En el modo de comando, se puede encontrar en la Hoja de trucos Vim (0 y $): fprintf.net/vimCheatSheet.html . Sin embargo, no sé sobre el modo de edición.
Gnoupi

Respuestas:

13

Esta respuesta asume que está usando vim en una ventana de Terminal .

Los enlaces predeterminados para Inicio y Fin son un poco diferentes de lo que un programa esperaría en función de la configuración habitual de TERM (es decir, una variante xterm). Si desea seguir con los enlaces predeterminados (y tener que usar las variantes Shifted en la Terminal ), puede intentar poner algo como esto en su .vimrc:

:" map Mac OS X Terminal.app default Home and End
:map <ESC>[H <Home>
:map <ESC>[F <End>
:imap <ESC>[H <C-O><Home>
:imap <ESC>[F <C-O><End>
:cmap <ESC>[H <Home>
:cmap <ESC>[F <End>

De lo contrario, puede intentar ajustar los códigos que envía Terminal cuando usa Inicio y Fin (incluso sin cambiar, si lo desea). Una búsqueda probablemente muestre algunos lugares que describen cómo hacerlo ( aquí hay uno ). La idea básica es que desea que Terminal envíe ESC [1 ~ en lugar de ESC [H para Inicio y ESC [4 ~ en lugar de ESC [F para Fin (o Shift-Home / Shift-End si desea mantener Home / Fin para acceder al scrollback). Describiría el proceso con más detalle, pero solo tengo 10.4, y sé que Terminal cambió mucho en 10.5 y posteriores.

Chris Johnsen
fuente
8

Con iTerm y Vim puede usar las flechas fn + derecha e izquierda en modo de inserción para saltar al principio o al final de la línea. Con Terminal.app usas shift + flechas .

giorni
fuente
1

Como una adición a la respuesta de Chris , también puede lograr la navegación de palabras (con Option+arrowteclas), simplemente agregando esas cuatro líneas:

:map <ESC>f el
:imap <ESC>b <C-o>b
:imap <ESC>f <C-o>el
:cmap <ESC>f el

Observe que oes minúscula, por lo que no saldrá del insertmodo para la operación. También puede cambiar las mayúsculas Oen la respuesta original para obtener el mismo efecto.

Maciej Sz
fuente
0

En MacVim, puede usar el Comando 'Flecha izquierda' y el Comando 'Flecha derecha' para ir al principio y al final de la línea mientras está en modo de edición.

Dominik
fuente
Parece que JtR está usando vim dentro de Terminal.app en lugar de usar MacVim (que recomendaría altamente, y también uso personalmente).
Matrix Mole
0

Vaya a Terminal -> Preferencias -> Perfiles -> Teclado y agregue:

Clave: ↖ Acción: \ 033OH

Clave: ↗ Acción: \ 033OF

Alfredo Cardigliano
fuente