¿Cómo mapeo Ctrl + F8 en vim?

1

He estado tratando de asignar Ctrl + F8 de varias maneras diferentes, pero simplemente no puedo hacerlo funcionar. Después de realizar algunas investigaciones, descubrí que vim no es compatible con todos los códigos de tecla de terminal y tengo que asignar el código de tecla de terminal a un código de tecla de vim vacío (como F13). Seguí esta Guía paso a paso sin ningún éxito.

Lo que hice es:

  1. Encuentre el código clave del terminal (URxvt) para Ctrl + F8 usando el cat. El resultado es: ^ [[19 ^
  2. Agregué las siguientes líneas a mi archivo de plugin:

set <F13>=^[[1;2B nnoremap <F13> :call foobar

¿Alguna sugerencia?

Mr. Blue
fuente

Respuestas:

1

[Después de la prueba, he transferido mi comentario a una respuesta.]

Tu set el comando no está utilizando el mismo valor que su código de escena. Además, debe asegurarse de estar usando un carácter de escape en lugar de los dos caracteres de ^ y [. Para facilitar esto sin "codificar" un carácter de escape, usaría :execute:

:exe "set <F13>=\e[19^"
:nnoremap <F13> :echo "It works!"<CR>
Heptite
fuente
Muchas gracias :). Funciona perfectamente bien. Sin embargo, realmente no entiendo qué significa "\ e" y por qué ": execute" funciona y ": set" solo no
Mr. Blue
Porque, por razones históricas, :set no se puede utilizar la evaluación o la expansión de la cadena, lo solucionamos con :execute. \e en comillas dobles es una secuencia de escape de cadena que se convierte en un verdadero carácter de escape.
Heptite