¿El uso de ctrl + c en lugar de esc para salir del modo insertar rompe algo en vi?

15

Al usar vi, puede salir del modo de inserción con Ctrl+ en Clugar del más tradicional Esc. ¿Hay alguna situación en la que sería indeseable usar para el primero en lugar del último? ¿Rompe algo más que las mejores prácticas?

MDMarra
fuente
No es deseable golpear al primero por accidente, lo que te da un error Type :quit<Enter> to exit Vimy me hizo buscar en Google cómo volver. Golpear ite lleva de vuelta al modo de inserción.
Noumenon el

Respuestas:

9

Ctrl-Cy Escno son iguales en vi/ vimen la mayoría de los modos, incluido el modo de inserción. La diferencia es Escabreviaturas desencadena mientras Ctrl-cque no. Si esto es importante para usted depende de si usted o los complementos que utiliza hacen uso de abreviaturas.


Tenga en cuenta que es más seguro suponer Escy Ctrl-Cno no significa lo mismo en vim. Otro ejemplo de este mismo sitio es al salir del modo de inserción de bloque (no en vi).

jw013
fuente
Es bueno saberlo, pero mi pregunta era sobre salir del modo de inserción.
MDMarra
@MDMarra Doh, leyó mal su pregunta. El modo de inserción sigue siendo diferente: vea la respuesta actualizada.
jw013
1
Aquí está la diferencia más importante con la que tuve que lidiar: la inserción multilínea con modo de bloque visual funciona con Esc y no con Cc.
enfascination
4

Creo que quieres decir vim, no vi.

De hecho, esto funciona vim, aunque no lo usaría a menos que estuviera 100% seguro de que nunca tocaría un sistema operativo que no sea Linux. La razón es que otros sistemas operativos pueden tener sus propias implementaciones vi, que no implementan esto, y puede encontrar que cuando se ejecuta vien esas plataformas, Ctrl-C tiene su propio comportamiento tradicional: interrumpa el proceso y deje su terminal en un estado extraño .

Michael Hampton
fuente
3
¿Puede señalar alguna viimplementación que todavía exista hoy y que no funcione Ctrl-C? Vea mi respuesta para la verdadera diferencia.
jw013
2

Si te refieres vim, hay una ligera diferencia. CTRL-Cno comprueba las abreviaturas y no desencadena el InsertLeaveevento. Por lo tanto, usted o los complementos han definido las autocmddeclaraciones que dependen de InsertLeaveellas, no se activarán.

De la documentación oficial http://vimhelp.appspot.com/insert.txt.html :

<Esc> or CTRL-[ End insert or Replace mode, go back to Normal mode.  Finish
                abbreviation.

CTRL-C          Quit insert mode, go back to Normal mode.  Do not check for
                abbreviations.  Does not trigger the InsertLeave autocommand
                event.

Puede definir una asignación para CTRL-Ca <esc>, luego se activará InsertLeave.

wisbucky
fuente