¿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?
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).
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 .
¿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.
<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.
Type :quit<Enter> to exit Vim
y me hizo buscar en Google cómo volver. Golpeari
te lleva de vuelta al modo de inserción.Respuestas:
Ctrl-Cy Escno son iguales en
vi
/vim
en 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 envi
).fuente
Creo que quieres decir
vim
, novi
.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 implementacionesvi
, que no implementan esto, y puede encontrar que cuando se ejecutavi
en esas plataformas, Ctrl-C tiene su propio comportamiento tradicional: interrumpa el proceso y deje su terminal en un estado extraño .fuente
vi
implementación que todavía exista hoy y que no funcioneCtrl-C
? Vea mi respuesta para la verdadera diferencia.Si te refieres
vim
, hay una ligera diferencia.CTRL-C
no comprueba las abreviaturas y no desencadena elInsertLeave
evento. Por lo tanto, usted o los complementos han definido lasautocmd
declaraciones que dependen deInsertLeave
ellas, no se activarán.De la documentación oficial http://vimhelp.appspot.com/insert.txt.html :
Puede definir una asignación para
CTRL-C
a<esc>
, luego se activaráInsertLeave
.fuente