Usando marcas con llaves muertas

9

Estoy usando un diseño de teclado en el que el backtick ( `) es una tecla muerta .

Esto significa que cuando escribo una tecla de retroceso seguida de una vocal (por ejemplo `a) lo que Vim ve es un carácter acentuado ( à). Entonces, si establezco una marca con ma, puedo saltar a la línea de la marca con 'a. Pero saltar a la ubicación específica de la marca con `ano funcionará.

Encontré una solución para esto: al escribir una tecla muerta, puedo hacer que Vim reciba un retroceso pulsando el retroceso y luego la barra espaciadora. Entonces, si quiero ir a marcar a, escribo `␣a.

¿Hay alguna manera de saltar a la marca sin tener que golpear ese espacio extra? ¿Sin efectos secundarios?

Gonçalo Ribeiro
fuente
¿No puede usar los backticks tipo 2 para obtener un backtick? ¿O configurar su sistema operativo para hacer eso? Eso sigue siendo una combinación de teclas adicional, pero mejor que `+ espacio ...
Martin Tournoij
@Carpetsmoker No. Escribir dos backticks normalmente resulta en `` para mí. Pero en el modo Normal parece que sucede otra cosa: escribo `` a y Vim dice "E78: Marca desconocida". De showcmdCreo Vim entiende esto como `a. También me gustaría hacer que el comportamiento del sistema operativo sea independiente. mapParece hacer el trabajo.
Gonçalo Ribeiro

Respuestas:

12

Intenta hacerlo un mapeo:

" Mapping dead keys in normal mode
nmap á 'a

De esa manera, cuando Vim obtiene el a acentuado, lo interpreta como `+a

El uso nmappermite que esto suceda solo en modo normal; en el modo de inserción o en el modo de comando, obtendrá el acento acomo esperaba.

Es posible aplicar esto a otras claves:

nmap à `a
nmap Á 'A
nmap À `A
nmap ç 'c
nmap Ç 'C
nmap é 'e
nmap è `e
nmap É 'E
nmap È `E
nmap í 'i
nmap ì `i
nmap Í 'I
nmap Ì `I
nmap ó 'o
nmap ò `o
nmap Ó 'O
nmap Ò `O
nmap ú 'u
nmap ù `u
nmap Ú 'U
nmap Ù `U
John O'M.
fuente
Esto funciona Y sin efectos secundarios. Debería aprender a usar mapas. Gracias.
Gonçalo Ribeiro
De nada. Me alegro de poder ayudar.
John O'M.
¿Qué pasa con el ^ (primer carácter suave de la línea)? Dado que este es un comando independiente, ¿qué se puede hacer? ¿El sistema operativo almacena en caché la tecla muerta hasta que se presiona otra tecla?
Spidey