Não é possível digitar Unicode com Gvim e VIM no Windows 7

11

Quero digitar em diferentes idiomas usando o (g) Vim. Mas quando mudo para outro idioma usando a barra de idiomas (caracteres Devanagari ou Hindi) e digito qualquer coisa, (g) o vim é exibido ??? ??.

O que eu tentei:

write ++enc=utf-8 foo.txt  
set fileencoding=utf-8   
set enc=utf-8

Em formação:

  • Versão do GVim: 7.4 e também seu + multi_byte.
  • Nenhuma alteração no arquivo vimrc padrão.

Acabei de começar com (g) vim.

msinfo
fonte
5
Pode ser uma coisa de fonte. Qual fonte você está usando?
muru
11
7 fontes (consolas, 2 courier, 2 lucida, fixedsys e terminal) estão listadas em gvim. Eu tentei todos eles. Enquanto meu sistema também possui outras fontes, o gvim exibe apenas 7. Também segui: stackoverflow.com/questions/3766204/vim-doesnt-support-unicode, mas ainda sem sorte.
msinfo
3
"Outra língua" é bastante vaga. Que lingua? Polonês? Hebraico? Chinês? Klingon? Se você estiver usando um idioma obscuro, é muito possível que nenhuma dessas fontes suporte esse idioma.
Martin Tournoij 03/03
11
No meu caso, estou tentando o malaiala com o GVim 7.4.800 (ou por aí) com a fonte Ubuntu Mono . Para texto de exemplo, consulte a Wikipédia em malaiala . No Linux (Ubuntu e Arch), com o terminal e as fontes GVim definidas para Ubuntu Mono, o Malayalam aparece, mesmo que um pouco esmagado. Eu tentei as outras fontes que o msinfo mencionou no segundo comentário.
Muru
11
No Linux, o gvim pode exibir os caracteres que você deseja, porque o Pango extrairá glifos de outras fontes para poder exibir todos os caracteres. É também por isso que os caracteres parecem diferentes do resto do seu texto. Se você tentar a mesma coisa no xterm, não verá todos os caracteres porque uma única fonte é usada. Eu suspeito que algo semelhante está acontecendo no Windows.
jamessan

Respostas:

5

A codificação padrão parece ser latin1:

:set encoding?
  encoding=latin1

Ao inserir caracteres, o Vim tenta convertê-los do conjunto de caracteres recebidos (provavelmente unicode) para latin-1. Isso falha, pois latin-1 não possui esses caracteres. Daí os pontos de interrogação.

A abertura de um arquivo existente (salvo com o bloco de notas ou outro programa) deve resultar em texto ilegível, pois agora o Vim está apenas tentando ler bytes e interpretá-los de acordo com o conjunto de caracteres latin-1, e não convertê-los no conjunto latin-1.

Você vai querer usar utf-8ou algo assim:

:set encoding=utf-8

Após o qual o script malaiala parece funcionar.

Observe que isso não fará com que os pontos de interrogação pré-existentes funcionem. Eles realmente são convertidos em pontos de interrogação (caractere 0x3f) na entrada. Não há como recuperar o que foi inserido. Suspeito que essa seja a fonte de confusão dessa questão.

Veja também :help 'encoding'.

Como nota de rodapé, os glifos não suportados na fonte geralmente são renderizados com um glifo distinto; isso varia por fonte, mas geralmente é um bloco quadrado ou um ponto de interrogação com estilo diferente. você pode ver a diferença entre um ponto de interrogação "real" e um glifo não suportado g8, que mostrará o código do caractere.

Martin Tournoij
fonte
11
Preciso digitar caracteres Devanagari ou Hindi. A codificação foi definida anteriormente para latin1, foi alterada conforme a sua sugestão para utf-8. Mas ainda não há caracteres Devanagari ou Hindi disponíveis. Mas quando copio essas caixas (conforme renderizadas pelo VIM), do VIM para o navegador ou o Notepad ++, elas se parecem com caracteres Unicode. Portanto, o VIM reconhece, mas não pode exibi-los.
msinfo
11
@msinfo Qual versão do Vim você está usando? Você mencionou o 7.4, mas não mencionou o nível do patch? Eu usei 7.4.1024 de vim.org .
Martin Tournoij 08/03
11
Parece sem correção, como tentei descobrir em uma de suas respostas ;-) em vi.stackexchange.com/questions/2466/… . O Vim --version não mostra nenhuma informação de patch. Não fiz nenhuma alteração no plug-in ou no patch após a instalação.
msinfo
4
O @msinfo Vim 7.4 foi lançado há quase dois anos e meio. Tente instalar a versão mais recente. Talvez seja tudo o que é necessário?
Martin Tournoij 8/03/16