it-swarm.com.de

Wie kann ich die Standardcodierung von VIM auf UTF-8 einstellen?

Ich möchte zu einem Open Source-Projekt beitragen, das übersetzte Zeichenfolgen bereitstellt. Eine ihrer Anforderungen ist, dass Mitwirkende UTF-8 als Codierung für die PO-Dateien verwenden müssen.

Ich verwende VIM 7.3 unter Linux. Wie kann ich sicher sein, dass die VIM-Codierung auf UTF-8 eingestellt ist, damit ich die .po-Datei richtig bearbeiten und speichern kann?

63
Paolo

Wenn Vim eine vorhandene Datei liest, versucht es, die Dateicodierung zu erkennen. Beim Schreiben der Datei verwendet Vim die erkannte Dateicodierung (außer wenn Sie dies anders angeben). Eine als UTF-8 erkannte Datei wird also als UTF-8 geschrieben, eine als Latin-1 erkannte Datei wird als Latin-1 geschrieben und so weiter.

Standardmäßig ist der Erkennungsprozess grob. Jede Datei, die Sie mit Vim öffnen, wird als Latin-1 angenommen, es sei denn, sie erkennt oben eine Unicode-Bytereihenfolge. Eine UTF-8-Datei ohne Byte-Reihenfolge ist schwer zu bearbeiten, da Multibyte-Zeichen im Puffer als Zeichenfolgen anstelle einzelner Zeichen angezeigt werden.

Schlimmer noch, Vim verwendet standardmäßig Latin-1, um den Text im Puffer darzustellen. Eine UTF-8-Datei mit einer Bytereihenfolge wird also durch Abwärtskonvertierung in Latin-1 beschädigt.

Die Lösung besteht darin, Vim für die interne Verwendung von UTF-8 zu konfigurieren. Dies wird in der Tat in der Vim-Dokumentation empfohlen, und der einzige Grund, warum es nicht so konfiguriert ist, besteht darin, dass Benutzer, die erwarten, dass Vim grundsätzlich als Latin-1-Editor fungiert, keine enorme Verwirrung stiften.

In deinem .vimrc, hinzufügen set encoding=utf-8 und starte Vim neu.

Oder setzen Sie stattdessen die Umgebungsvariable LANG, um anzugeben, dass UTF-8 Ihre bevorzugte Zeichenkodierung ist. Dies betrifft nicht nur Vim, sondern jede Software, die sich auf LANG stützt, um zu bestimmen, wie Text dargestellt werden soll. Zum Beispiel, um anzugeben, dass Text in Englisch (en) erscheinen soll, wie in den USA gesprochen (US), codiert als UTF-8 (utf-8), einstellen LANG=en_US.utf-8.

Jetzt verwendet Vim UTF-8, um den Text im Puffer darzustellen. Außerdem wird es entschlossener sein, die UTF-8-Codierung in einer Datei zu erkennen. Neben der Suche nach einer Byte-Ordnungsmarke wird auch nach UTF-8 ohne Byte-Ordnungsmarke gesucht, bevor auf Latin-1 zurückgegriffen wird. Eine in UTF-8 codierte Datei wird also nicht mehr beschädigt, und die UTF-8-Zeichen sollten während der Bearbeitungssitzung ordnungsgemäß angezeigt werden.

Weitere Informationen darüber, wie Vim die Dateicodierung erkennt, finden Sie unter die Option fileencodings in der Vim-Dokumentation .

Weitere Informationen zum Festlegen der von Vim intern verwendeten Codierung finden Sie unter Option encoding .

Wenn Sie die Codierung überschreiben müssen, die beim Zurückschreiben einer Datei auf die Festplatte verwendet wird, lesen Sie die Option fileencoding .

67
MetaEd

Laut vimdoc versucht vim, die Dateicodierung automatisch zu erkennen. Wenn Sie also vorhandene Dateien bearbeiten , sollten Sie gut sein.

Sie können die Codierung jederzeit mit :set fileencodings=utf-8 Erzwingen. Die Dokumentation finden Sie hier .

5
Mr Shunz