inicio / final en modo INSERT en vi en una Mac

1

En una Mac, puedo ir al inicio y al final de una línea en vi, cuando no está en modo INSERT:

^(inicio de línea)
$(final de línea)

Esto se explica, por ejemplo, aquí: ¿Cómo hago "fin", "inicio", "página arriba" y "página abajo" en mi terminal / editor VIM?

Pero, ¿cómo voy al principio y al final de una línea en vi, cuando estoy en modo INSERT?

cmd+ / se desplaza entre ventanas
alt+ retrocede una palabra
ctrl+ / no hace nada
shift+ / retrocede / avanza una palabra
ctrl+ cmd+ / retrocede / avanza una palabra
fn+ left/ va al principio / final del búfer de terminal

Resumen de la solución proporcionada por @romainl a continuación:
Terminal> Preferencias> Configuración> Teclado> +
Tecla: Inicio, Modificador: Ninguno, Acción: Enviar texto, \ 017 ^
Tecla: Finalizar, Modificador: Ninguno, Acción: Enviar texto, \ 017 $

Encontré esta solución muy ordenada, que ahorra un golpe de tecla: moverse al comienzo de la línea mientras está en modo Insertar .

ctrl+ oseguido de 0(inicio) o $(final) o ^(primer carácter que no sea un espacio en blanco)

Y aquí hay una respuesta muy elaborada: atravesar texto en modo Insertar

tommy.carstensen
fuente
Sus puntos de vista personales realmente no agregan nada de valor a la pregunta. ¿Puedes eliminar este comentario y enfocarte en cuál es exactamente tu pregunta?
Ramhound

Respuestas:

1

Primero, se supone que no debes mover el cursor cuando estás en modo de inserción.

Segundo, solo algunos teclados Mac vienen sin teclas <Home>/ <End>. Deberías haber examinado más de cerca antes de desembolsar todo ese dinero en efectivo para una computadora que es tan dolorosa de usar.

En tercer lugar, puede usar los siguientes accesos directos cuando no tiene teclas físicas <Home>/ <End>:

  • fn+ para<Home>
  • fn+ para<End>

Cuarto, Terminal.app captura <Home>/ de <End>todos modos, por lo que tendrá que editar esos enlaces en la ventana de "preferencias" si desea que Vim reciba <Home>y <End>.

Para <Home>, presione Ctrl+o(se inserta \017) y luego ^:

Casa

Para <End>, presione Ctrl+o(se inserta \017) y luego $:

Final

romainl
fuente
0) gracias. Trabajó. Eres un genio. 1) Puedo hacerlo en Linux y Windows, así que quiero poder hacerlo en Mac. 2) Quería un sistema operativo basado en Unix y el trabajo solo es compatible con Ubuntu, que me gusta mucho menos que Mint, que ejecuto en mi PC en casa. 3) gracias. No funciona en modo INSERT. 4) Gracias por la solución. He agregado un breve resumen de su solución a mi pregunta. ¡Gracias!
tommy.carstensen
Solo tengo que tener cuidado de no presionar la tecla de inicio, cuando esté en la línea de comando del terminal, porque el comando escrito se ejecuta si presiono inicio o fin; es decir, después de aplicar su corrección.
tommy.carstensen
Puede configurarlo para que envíe una secuencia muy especial y mapear esa secuencia en Vim.
romainl
Probaré eso. Si hago \ 033 [F para Fin y \ 033 [H para Inicio, entonces Inicio y Fin funciona en la terminal, pero no en Vim.
tommy.carstensen
0

El archivo gvimrc del sistema distribuido con MacVim tiene dos conjuntos de asignaciones. Uno está habilitado de forma predeterminada, el otro deshabilitado. Curiosamente, ninguno contiene un comando para ir al inicio / final de la línea en modo Insertar, pero aún vale la pena echarle un vistazo:

:e $VIM/gvimrc

Puede agregar algo a su archivo vimrc como este:

inoremap <D-Left> <Home>
inoremap <D-Right> <End>

Una pequeña prueba muestra que esto funciona en la GUI pero no en la terminal, por lo que tal vez debería ir en su archivo gvimrc. Qué tal si

inoremap <C-V><S-Left> <Home>
inoremap <C-V><S-Right> <End>

Donde NO escribe esos comandos literalmente: <C-V>es un personaje y <S-Left>es otro. En mi máquina, usando Mac's Terminal.app, obtengo el mismo efecto con esto, escrito literalmente:

inoremap <Esc>OC <End>
inoremap <Esc>OD <Home>

Al usar la GUI, esto puede sobrescribirse por la configuración en el archivo gvimrc del sistema.

benjifisher
fuente