Impossible de taper Unicode avec Gvim et VIM sur Windows 7

11

Je veux taper dans différentes langues en utilisant (g) Vim. Mais lorsque je passe à une autre langue à l'aide de la barre de langue (caractères devanagari ou hindi) et que je tape quoi que ce soit, (g) affiche vim ??? ??.

Ce que j'ai essayé:

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

Information:

  • Version GVim: 7.4, ainsi que son + multi_byte.
  • Aucune modification dans le fichier vimrc par défaut.

Je viens de commencer avec (g) vim.

msinfo
la source
5
Ça pourrait être une police. Quelle police utilisez-vous?
muru
1
7 polices (consolas, 2 courier, 2 lucida, fixedsys et terminal) sont répertoriées dans gvim. Je les ai tous essayés. Bien que mon système possède également d'autres polices, mais gvim n'en affiche que 7. J'ai également suivi: stackoverflow.com/questions/3766204/vim-doesnt-support-unicode mais toujours pas de chance.
msinfo
3
"Une autre langue" est assez vague. Quelle langue? Polonais? Hébreu? Chinois? Klingon? Si vous utilisez une langue obscure, il est très possible qu'aucune de ces polices ne prenne en charge cette langue.
Martin Tournoij
1
Dans mon cas, j'essaie Malayalam avec GVim 7.4.800 (ou à peu près) avec la police Ubuntu Mono . Pour un exemple de texte, voir le Wikipedia malayalam . Sous Linux (Ubuntu et Arch), avec le terminal et les polices GVim définies sur Ubuntu Mono, Malayalam apparaît, même s'il est un peu écrasé. J'ai essayé les autres polices msinfo mentionnées dans le deuxième commentaire.
muru
1
Sous Linux, gvim peut afficher les caractères souhaités car Pango va extraire des glyphes d'autres polices pour pouvoir afficher tous les caractères. C'est aussi pourquoi les caractères sont différents du reste de votre texte. Si vous essayez la même chose dans xterm, vous ne verrez pas tous les caractères car une seule police est utilisée. Je soupçonne que quelque chose de similaire se produit sous Windows.
jamessan

Réponses:

5

L'encodage par défaut semble être latin1:

:set encoding?
  encoding=latin1

Lors de la saisie de caractères, Vim essaie de les convertir du jeu de caractères entrant (probablement unicode) en latin-1. Cela échoue car latin-1 n'a pas ces caractères. D'où les points d'interrogation.

L'ouverture d'un fichier existant (enregistré avec le bloc-notes ou un autre programme) devrait entraîner un texte tronqué, car maintenant Vim essaie simplement de lire les octets et de les interpréter en fonction du jeu de caractères latin-1, et non de les convertir en jeu latin-1.

Vous voudrez utiliser utf-8ou certains tels:

:set encoding=utf-8

Après quoi le script malayalam semble fonctionner.

Notez que cela ne fera pas fonctionner les points d'interrogation préexistants. Ceux-ci sont vraiment convertis en points d'interrogation (caractère 0x3f) en entrée. Il n'y a aucun moyen de récupérer ce qui a été entré. Je soupçonne que c'est la source de confusion de cette question.

Voir aussi :help 'encoding'.

En tant que sidenote, les glyphes non pris en charge dans la police sont généralement rendus avec un glyphe distinct; cela varie selon la police, mais il s'agit généralement d'un bloc carré ou d'un point d'interrogation de style différent. vous pouvez voir la différence entre un "vrai" point d'interrogation et un glyphe non pris en charge avec g8, qui affichera le code du caractère.

Martin Tournoij
la source
1
Je dois taper des caractères devanagari ou hindi. L'encodage était précédemment défini sur latin1, il a été modifié selon votre suggestion en utf-8. Mais toujours aucun caractère devanagari ou hindi n'est visible. Mais lorsque je copie ces boîtes (telles que rendues par VIM), de VIM vers le navigateur ou Notepad ++, elles ressemblent à des caractères Unicode. VIM les reconnaît, mais ne peut pas les afficher.
msinfo
1
@msinfo Quelle version de Vim utilisez-vous? Vous avez mentionné 7.4, mais vous n'avez pas mentionné le niveau du patch? J'ai utilisé 7.4.1024 de vim.org .
Martin Tournoij
1
Cela semble non corrigé, comme j'ai essayé de le découvrir dans l'une de vos réponses ;-) sur vi.stackexchange.com/questions/2466/… . Vim --version n'affiche aucune information de patch. Je n'ai effectué aucun changement de plugin ou de patch, après l'installation.
msinfo
4
@msinfo Vim 7.4 est sorti il ​​y a presque deux ans et demi. Essayez d'installer la nouvelle version. Peut-être que c'est tout ce qui est nécessaire?
Martin Tournoij