¿Cómo asignar la tecla ALT en .vimrc?

9

Con el fin de ser capaces líneas complemento en blanco sin entrar en el modo de inserción, que estoy tratando de mapear ALT-oy ALT-Oa o<ESC>yo<ESC>

He intentado lo siguiente en mi .vimrc

map <M-o> o<ESC>
map <M-O> O<ESC>

y

map <ALT-o> o<ESC>
map <ALT-O> O<ESC>

y (como se sugiere a continuación)

map <A-o> o<ESC>
map <A-O> O<ESC>

Pero ninguno funciona. Simplemente da el comportamiento habitual, como si ALT-ono se hubiera definido.

Esta es la primera vez que modifico el .vimrcarchivo, y no puedo encontrar dónde la documentación le dice cómo designar las diferentes claves. Pero puedo verificar que mi .vimrcarchivo se está leyendo, incluyendo:

map <Enter> ihello<ESC>

Que se asigna correctamente <Enter>para insertar helloy volver al modo de comando.

Estoy usando vim con cygwin.

Eric Wilson
fuente
Parece que su terminal no está pasando las secuencias alt en absoluto. ¿Funciona alguna otra secuencia conocida? ¿Qué hay de probar Ctrl? ¿Qué terminal estás usando?
Caleb
Estoy usando vim en cygwin, pero he hecho que otros scripts funcionen, como mis detalles de edición.
Eric Wilson
Ctrl funciona, más o menos. No parece permitirme distinguir entre <C-o>y <C-O>.
Eric Wilson
La respuesta de Giles va por buen camino. Definitivamente debe cambiar a un terminal más capaz. ¡Estos problemas deberían desaparecer y recuperarás tus llaves!
Caleb

Respuestas:

10

Para ver qué está enviando su terminal cuando presiona una tecla, cambie al modo de inserción, presione Ctrl+Vy luego la tecla. La mayoría de las teclas con la mayoría de los terminales envían una secuencia de escape donde solo el primer carácter es un carácter de control; Ctrl+Vinserta el siguiente carácter literalmente, para que puedas insertar toda la secuencia de escape de esa manera.

Diferentes terminales envían diferentes secuencias de escape para algunas combinaciones de teclas. Muchos terminales envían el mismo carácter ( ^O) para ambos Ctrl+Oy Ctrl+Shift+O; Si ese es el caso, Vim no podrá distinguir entre ellos.

Mencionas que estás usando Cygwin; en qué terminal está ejecutando Vim es la información más pertinente. Si está utilizando la consola nativa de Windows, consiga una mejor terminal. Recomiendo MinTTY para ejecutar aplicaciones de modo de texto Cygwin en un terminal en Windows fuera de X, pero RXVT y PuTTYcyg nativo de Windows de Cygwin también son buenos. (También Console2 para ejecutar aplicaciones de consola de Windows, pero eso está fuera de tema aquí).

Gilles 'SO- deja de ser malvado'
fuente
3

Si Control+Vseguido de ALT-xshows ^[x(escriba en la terminal) puede arreglarlo con este pequeño script de vim.wikia.com :

for i in range(97,122)
  let c = nr2char(i)
  exec "map \e".c." <M-".c.">"
  exec "map! \e".c." <M-".c.">"
endfor

Agregue a .vimrc para todas las asignaciones de teclas alternativas.

laktak
fuente
1

Esto me funciona en el terminal Ubuntu 16.04 xfce (y en el terminal alacritty rust)

Establezca el desencadenador de fragmentos de ultisnip en Meta-/(al igual que el fragmento de emacs)

let g:UltiSnipsExpandTrigger="^[/"

Aquí está ahora ^[/escribo vim

En modo de inserción Ctrl-V Alt-/

( Metaes la Alttecla en el teclado de mi PC)

usuario178047
fuente
-1

La tecla M (eta) es el botón de Windows. Es simplemente <A-o>.

Martin Ueding
fuente
Esto tampoco funciona.
Eric Wilson
Este no es siempre el caso, en diferentes diseños de teclado y configuraciones regionales de idioma a menudo son diferentes.
Caleb
@Caleb ¿hay alguna documentación para esto?
Eric Wilson
Lo intenté map <A-o> o<ESC>y funcionó para mí. Si lo pones en tu .vimrc, ¿lo recargaste?
Martin Ueding
El autor de la pregunta ya declaró en su pregunta que verificaron que el archivo se estaba cargando. Esto no es relativo al usuario ya que está en Windows, pero puede ver diferentes configuraciones de teclas Meta / Win / Alt en los archivos de geometría / símbolo / código clave xkb. Notará que incluso en las opciones de diseño del teclado gnome hay varias formas comunes de reasignar entre Alt / Win / Meta. Una de las razones por las que esto existe se debe a la disparidad en los diseños de base.
Caleb