Usando marcas com chaves mortas

9

Estou usando um layout de teclado no qual o backtick ( `) é uma chave morta .

Isso significa que, quando digito um backtick seguido de uma vogal (por exemplo `a), o que o Vim vê é um caractere acentuado ( à). Então, se eu definir uma marca com maeu posso pular para a linha da marca com 'a. Mas pular para o local específico da marca com `anão funcionará.

Encontrei uma solução alternativa para isso: ao digitar uma tecla morta, posso fazer com que o Vim receba um backtick pressionando o backtick e depois a barra de espaço. Então, se eu quiser marcar a, digite `␣a.

Existe uma maneira de pular para a marca sem ter que atingir esse espaço extra? Sem efeitos colaterais?

Gonçalo Ribeiro
fonte
Não é possível usar os backticks do tipo 2 para obter um backtick? Ou configure seu sistema operacional para fazer isso? Isso ainda é um keystoke extra, mas melhor do que `+ espaço ...
Martin Tournoij
@Carpetsmoker Não. Digitar dois backticks normalmente resulta em `` para mim. Mas no modo Normal, parece que outra coisa acontece: digito `` a e Vim diz "E78: marca desconhecida". De showcmdAcho Vim entende isso como `à. Também gostaria de tornar o comportamento do SO independente. mapparece fazer o trabalho.
Gonçalo Ribeiro

Respostas:

12

Tente fazer um mapeamento:

" Mapping dead keys in normal mode
nmap á 'a

Dessa forma, quando o Vim obtém o a acentuado, ele o interpreta como `+a

O uso nmappermite que isso ocorra apenas no modo normal; no modo de inserção ou modo de comando, você receberá o destaque aconforme o esperado.

É possível aplicar isso a outras chaves:

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.
fonte
Isso funciona. E sem efeitos colaterais. Eu deveria aprender a usar mapas. Obrigado.
Gonçalo Ribeiro
De nada. Ainda bem que pude ajudar.
John O'M.
E o ^ (primeiro caractere suave da linha)? Como esse é um comando independente, o que pode ser feito? O sistema operacional armazena em cache a tecla morta até que outra tecla seja pressionada?
Spidey