¿Cómo enviar la señal ESC a vim cuando mi clave esc no funciona?

20

Tengo un problema con la Escclave cuando quiero volver al modo interactivo desde el modo de inserción. ¿Existe otra tecla utilizada para liberar el modo de inserción?

Sandra Ross
fuente
13
Control de prensa[
Thomas Dickey
3
Muchas sugerencias en vi.stackexchange.com/q/300/9708 también.
Guy
2
nuevo Macbook Pro? <grin>
Rui F Ribeiro
2
no, thinkpad x1 carbon
Sandra Ross

Respuestas:

7

A pesar de las soluciones existentes, la solución convencional en Vim es reasignar claves en su .vimrcconfiguración. De hecho, muchos usuarios de Vim tienen una clave accesible más fácil de reasignar Esc. Las opciones populares son Ctrl+ Enter, o jj, etc.

Para habilitar esto, simplemente coloque algo como lo siguiente en su .vimrcy vuelva a cargarlo / reinicie Vim:

" Shift-Enter
inoremap <S-CR> <Esc>
" Double-j
inoremap jj <Esc>

Más información y alternativas.

Konrad Rudolph
fuente
1
Eyup, esa es la forma de Vim. Otra forma común promovida por Learn Vim the Hard Way (libro) esinoremap jk <Esc>
grochmal
Esta es una buena solución, pero ¿cuál es el problema para usar solo Ctrl + Enter + j?
Sandra Ross
@SandraRoss Realmente puede usar cualquier combinación de teclas que desee (aunque tenga en cuenta que algunas, por ejemplo, Ctrl-Enter, no funcionan en macOS). Dicho esto, Ctrl + Enter + j me parece más difícil de escribir, y honestamente no sé si incluso puedes configurar combinaciones de tres teclas con dos teclas no modificadoras (Enter, j) en Vim.
Konrad Rudolph
Ok, lo entiendo. De hecho, Ctrl + Enter + jj no funciona para mí, porque, de hecho, uso macos X. Al menos, ¿podría decirme qué tengo que ingresar para solo Ctrl + j?
Sandra Ross
@SandraRoss Para eso, inoremap <C-j> <Esc>debería funcionar. :-)
Konrad Rudolph
32

Ctrl- [envía el mismo carácter al terminal que la Escclave física . Este último es simplemente un atajo para el primero, en general.

DopeGhoti
fuente
3
Una vez tuve un terminal vt220 real, y su teclado no tiene una Escapeclave. Presionar Ctrl+[era la única forma de generar Escape.
Kusalananda
11

Si desea poder usar una sola clave, como una solución pura * nix (sin asignaciones de Vim) puede definir otra clave como Esc. Al igual que los usuarios de Emacs reasignar CapsLocka Ctrlalgunos usuarios de Vim (yo incluido) de reasignación CapsLocka Esc. Esto funciona para cualquier * nix que use X11.

Use xev -event keyboard(y luego presione CapsLock) para obtener el código CapsLockclave de la clave (para mí es el código clave 66). Luego puede usar xmodmappara reasignar la clave:

xmodmap -e 'remove Lock = Caps_Lock' -e 'keycode 66 = Escape'

Para obtener esto al iniciar sesión, puede agregar las xmodmapexpresiones de la ~/.Xmodmapsiguiente manera:

remove Lock = Caps_Lock
keycode 66 = Escape

Aunque para la segunda parte YMMV, ya que no todos los administradores de pantalla se ejecutan ~/.Xmodmap. Es posible que tenga que añadir xmodmap .Xmodmapa .xinitrcalgunos de ellos.

grochmal
fuente
Sé exactamente a que te refieres. Lo he visto a principios de esta semana
Sandra Ross, el
Lo haría, pero uso CapsLock como mi clave de composición (:
DopeGhoti
6

Podrías probar Ctrl-C, eso funciona para mí y en mi opinión es más fácil que ESC. Sin embargo, no estoy seguro de si está habilitado de forma predeterminada.

vatsug
fuente
CTRL-C es ASCII 0x03, envía SIGINT al shell, no es lo mismo que ESC.
gato
@cat Sin embargo, funciona básicamente lo mismo en vim. Siempre estoy usando Ctrl-C en lugar de Esc
Erik W
1
@cat: Lo obtienes gratis, porque vim tiene ese controlador en su lugar. No tienes que hacer nada tú mismo. Esta respuesta funciona fuera de la caja; Solo lo intenté. ¿Funciona en general para cualquier aplicación? No, pero eso no fue lo que se pidió.
Lightness compite con Monica el
2
@cat: ¿En serio? El título es "¿Cómo enviar la señal ESC a vim cuando mi clave esc no funciona?" , la única etiqueta es vim , y el problema descrito en la pregunta se trata de escapar del modo de inserción de Vim. Aquí está la parte resumida de la pregunta: "¿Existe otra clave utilizada para liberar el modo de inserción"? Si eso no es específico para Vim y su modo de inserción, ¡entonces no sé qué es!
Lightness compite con Monica el
1
@LightnessRacesinOrbit Bueno, cuando vi el título inicialmente, era "Otra clave utilizada para Esc" y la pregunta no parecía específica vimen absoluto. ¡lo siento! ¯_ (ツ) _ / ¯
gato
-3

Ctrl + F2

Está habilitado por defecto. No es necesario configurar ninguna configuración.

Pasará al modo normal, donde puede hacerlo :q! or :wq.

Raj
fuente
3
Ctrl+F2puede enviar un escape, pero también enviará otras cosas.
Kusalananda