Impossibile digitare Unicode con Gvim e VIM su Windows 7


11

Voglio scrivere in diverse lingue usando (g) Vim. Ma quando passo a un'altra lingua usando la barra della lingua (caratteri Devanagari o Hindi) e digito qualsiasi cosa, (g) visualizza vim ??? ??.

Cosa ho provato:

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

Informazione:

  • Versione GVim: 7.4, e anche il suo + multi_byte.
  • Nessuna modifica nel file vimrc predefinito.

Ho appena iniziato con (g) vim.


5
Potrebbe essere una cosa da font. Quale font stai usando?
Muru,

1
7 caratteri (console, 2 corrieri, 2 lucida, fixedsys e terminale) sono elencati in gvim. Li ho provati tutti. Mentre il mio sistema ha anche altri caratteri, ma gvim visualizza solo 7. Ho anche seguito: stackoverflow.com/questions/3766204/vim-doesnt-support-unicode ma ancora senza fortuna.
msinfo,

3
"Un'altra lingua" è piuttosto vaga. Quale lingua? Polacco? Ebraico? Cinese? Klingon? Se stai usando un linguaggio oscuro, è molto probabile che nessuno di quei caratteri supporti tale linguaggio.
Martin Tournoij,

1
Nel mio caso, sto provando Malayalam con GVim 7.4.800 (o successivi) con il carattere Ubuntu Mono . Per un testo di esempio, consultare la Wikipedia del Malayalam . Su Linux (Ubuntu e Arch), con i caratteri terminal e GVim impostati su Ubuntu Mono, Malayalam si presenta, anche se un po 'schiacciato. Ho provato gli altri caratteri msinfo menzionati nel secondo commento.
Muru,

1
Su Linux, gvim può visualizzare i caratteri desiderati perché Pango inserirà glifi da altri caratteri per poter visualizzare tutti i caratteri. Questo è anche il motivo per cui i personaggi sembrano diversi dal resto del testo. Se provi la stessa cosa in xterm, non vedrai tutti i caratteri perché viene utilizzato un singolo carattere. Sospetto che qualcosa di simile stia accadendo su Windows.
Jamessan,

Risposte:


5

La codifica predefinita sembra essere latin1:

:set encoding?
  encoding=latin1

Quando si inseriscono i personaggi, Vim tenta di convertirli dal set di caratteri in arrivo (probabilmente unicode) in latino-1. Questo non riesce poiché latin-1 non ha questi personaggi. Da qui i punti interrogativi.

L'apertura di un file esistente (salvato con il blocco note o con qualche altro programma) dovrebbe dare luogo a un testo confuso dato che ora Vim sta solo cercando di leggere byte e interpretarli in base al set di caratteri latino-1 e non convertirli in set latino-1.

Ti consigliamo di utilizzare utf-8o alcuni di questi:

:set encoding=utf-8

Dopo di che la sceneggiatura di Malayalam sembra funzionare.

Nota che questo non farà funzionare punti interrogativi preesistenti. Questi sono davvero convertiti in punti interrogativi (carattere 0x3f) sull'input. Non c'è modo di recuperare ciò che è stato inserito. Ho il sospetto che questa sia la fonte di confusione di questa domanda.

Vedere anche :help 'encoding'.

Come sidenote, i glifi non supportati nel carattere sono di solito resi con un glifo distinto; questo varia a seconda del carattere, ma in genere è un blocco quadrato o un punto interrogativo in stile diverso. puoi vedere la differenza tra un punto interrogativo "reale" e un glifo non supportato con g8, che mostrerà il codice carattere.


1
Devo digitare i caratteri Devanagari o Hindi. La codifica era precedentemente impostata su latin1, è stata modificata secondo il tuo suggerimento in utf-8. Ma ancora nessun personaggio Devanagari o Hindi è visibile. Ma quando copio quelle scatole (come renderizzate da VIM), da VIM a browser o Notepad ++, sembrano caratteri Unicode. Quindi VIM riconosce, ma non può visualizzarli.
msinfo

1
@msinfo Quale versione di Vim stai usando? Hai menzionato 7.4, ma non hai menzionato il livello di patch? Ho usato 7.4.1024 da vim.org .
Martin Tournoij

1
Sembra senza patch, come ho cercato di scoprire da una delle tue risposte ;-) su vi.stackexchange.com/questions/2466/… . Vim --version non mostra alcuna informazione sulla patch. Non ho apportato modifiche al plug-in o alla patch dopo l'installazione.
msinfo

4
@msinfo Vim 7.4 è stato rilasciato quasi due anni e mezzo fa. Prova a installare la versione più recente. Forse è tutto ciò che serve?
Martin Tournoij,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.