Ich arbeite von Zeit zu Zeit an Webseiten mit nicht-englischen Skripten. Die meisten von ihnen verwenden den Zeichensatz utf-8, VIM und Gvim zeigen UTF-8-Zeichen nicht richtig an.
Verwenden von VIM 7.3.46 unter Windows 7 64-Bit mit set guifont=Monaco:h10
in _vimrc
Gibt es eine Möglichkeit, dies zu beheben?
Update: Ich habe gegoogelt und festgestellt, dass es sich um einen set guifontwide
zweiten Fallback für regionale Sprachen handelt.
Ich habe die folgenden Zeilen in _vimrc hinzugefügt und die meisten meiner Probleme wurden gelöst.
set enc=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf8,prc
set guifont=Monaco:h11
set guifontwide=NSimsun:h12
Die obige NSimsun-Schriftart funktioniert für Chinesisch. Das Problem ist, dass ich nicht weiß, wie sie den Schriftnamen für die Arbeit mit VIM erhalten haben. Sie Courier New
wird erwähnt, da sie sich Courier_New
auch NSimsun
nirgends im Schriftartenverzeichnis befindet. Die Schriftart, die ich verwenden möchte, ist Latha
Aber ich weiß nicht, wie ich sie in der _vimrc-Datei verwenden soll. set guifontwide=latha:h12
oder set guifontwide=Latha:h12
funktioniert nicht.
Wenn ich das erfolgreich auf gesetzt guifontwide
habe latha
, ist mein Problem gelöst. Wie geht das?
'guifont'
und der Wert von'guifontwide'
? Welches Betriebssystem verwenden Sie und welche Version von vim?set guifontwide=NSimsun:h12
schlägt für mich fehl, sagt "Ungültige breite Schrift" wahrscheinlich das gleiche Nicht-Monospace-Problem?Antworten:
Versuchen Sie, das Dokument neu zu laden, indem Sie:
Wenn das funktioniert, sollten Sie möglicherweise die
fileencodings
Einstellungen in Ihrer .vimrc ändern.quelle
:u
wird dich aber retten.:set noro
:e! ++enc=utf8
, hat es das utf-8 gerendert, sich aber[ILLEGAL BYTE in line 286]
(die erste binäre Teilzeile) in der Datei beschwert . Ich vermute, dass das Standardverhalten darin besteht, stillschweigend auf eine andere Codierung zurückzugreifen, wenn dies beim Öffnen von Vim geschieht. Aus irgendeinem Grund wirdecho &enc
in diesem Fall jedoch immer noch utf-8 gemeldet.&enc
ist die Codierung, die vim intern zum Speichern von Pufferinhalten verwendet. Die Einstellung, die die Codierung für die aktuelle Datei enthält, ist&fenc
Hast du versucht
?
quelle
:set encoding=utf8
WILL den Puffer aktualisieren und wenn das Problem in einem falschen Codierung ist, wird es beheben. Ich habe dieset fileencoding=utf8
Option hinzugefügt, damit beim Speichern nicht der verwirrendste Fehler "Zeichen können nicht konvertiert werden" auftritt.~/.vimrc
und es hat gut funktioniertWenn Japaner hierher kommen, fügen Sie bitte die folgenden Zeilen hinzu
~/.vimrc
quelle
Unter Microsoft Windows können Sie mit gvim keine nicht monospaced Schriftarten auswählen. Leider ist Latha eine nicht monospaced Schriftart.
Es gibt einen Hack-Weg, um dies zu erreichen: Verwenden Sie FontForge (Sie können Windows-Binärdateien von http://www.geocities.jp/meir000/fontforge/ herunterladen ), um die Latha.ttf zu bearbeiten und als monospaced Schriftart zu markieren. So machen:
Viel Glück!
quelle
Öffnen Sie unter Linux die VIM-Konfigurationsdatei
Folgende Zeilen wurden hinzugefügt:
Speichern und beenden und Terminalbefehl:
Zu diesem Zeitpunkt zeigt VIM Chinesisch korrekt an.
quelle
Ist dieses Problem inzwischen gelöst?
Ich hatte das Problem, dass gvim nicht alle Unicode-Zeichen (sondern nur eine Teilmenge, einschließlich der Umlaute und Zeichen mit Akzent) anzeigte , während
:set guifont?
es leer war. siehe meine Frage . Nachdem ich hier gelesen habe, wurdeguifont
es für mich behoben , indem ich den Wert auf einen vernünftigen Wert eingestellt habe. Ich benötige jedoch keine Zeichen über 2 Bytes.quelle
Ich konnte keine anderen von mir installierten Schriftarten in meinem Windows GVim-Editor anzeigen lassen, daher habe ich einfach zu einer Schriftart gewechselt,
Lucida Console
die zumindest etwas bessere UTF-8-Unterstützung bietet. Fügen Sie dies am Ende Ihres_vimrc
:Jetzt sehe ich mindestens einige UTF-8-Zeichen.
quelle
Unter Windows gvim wählen Sie einfach die Schriftart "Lucida Console".
quelle