I want to type ½
in vi mode but it is coming with extra character ½
.
Não.
O que está acontecendo é que o seu terminal está enviando esse caractere codificado como UTF-8. O caractere é U + 00BD e sua codificação UTF-8 é a seqüência de dois caracteres de 8 bits cujos valores hexadecimais são C2
BD
.
O vim acha que você não está digitando em UTF-8. Ele pensa que você digitou dois caracteres de 8 bits, primeiro caractere U + 00C2 e, em seguida, caractere U + 00BD. Por isso, está inserindo esses dois caracteres.
Fazer o vim acreditar que você está usando o UTF-8 é uma viagem ao complexo mundo das localidades e codificações. Atualmente, o vim acredita que seu terminal gera a entrada Latin-1 (ISO 8859-1). Você precisa do vim para acreditar que seu terminal gera uma entrada UTF-8.
Além disso: também é aparente, do que está enterrado em comentários para outra resposta, que seu texto de ajuda também não está sendo tratado como UTF-8, indicando que ele não está trabalhando internamente em UTF-8, provavelmente porque seu variáveis de ambiente (
LANG
,
LC_ALL
e assim por diante) não estão especificando uma localidade UTF-8. Para que o vim manipule adequadamente a entrada UTF-8, é melhor que ele esteja usando UTF-8 internamente, como sua codificação geral.
Algo como o
O comando
:set termencoding=utf-8 encoding=utf-8
é provavelmente o melhor curso de ação. Mas você também pode se ajustar a variáveis de ambiente.