¿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?
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:
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.
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:
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.
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.
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.
[
Respuestas:
A pesar de las soluciones existentes, la solución convencional en Vim es reasignar claves en su
.vimrc
configuració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
.vimrc
y vuelva a cargarlo / reinicie Vim:Más información y alternativas.
fuente
inoremap jk <Esc>
inoremap <C-j> <Esc>
debería funcionar. :-)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.
fuente
Escape
clave. PresionarCtrl+[
era la única forma de generarEscape
.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 usarxmodmap
para reasignar la clave:Para obtener esto al iniciar sesión, puede agregar las
xmodmap
expresiones de la~/.Xmodmap
siguiente manera:Aunque para la segunda parte YMMV, ya que no todos los administradores de pantalla se ejecutan
~/.Xmodmap
. Es posible que tenga que añadirxmodmap .Xmodmap
a.xinitrc
algunos de ellos.fuente
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.
fuente
0x03
, envía SIGINT al shell, no es lo mismo que ESC.vim
en absoluto. ¡lo siento! ¯_ (ツ) _ / ¯Ctrl + F2
Está habilitado por defecto. No es necesario configurar ninguna configuración.
Pasará al modo normal, donde puede hacerlo
:q! or :wq
.fuente
Ctrl+F2
puede enviar un escape, pero también enviará otras cosas.