Setzen Sie die Codierung und Dateicodierung in Vim auf utf-8

95

Was ist der Unterschied zwischen diesen beiden Befehlen?

  • set encoding=utf-8
  • set fileencoding=utf-8

Muss ich beide einstellen, wenn ich utf-8 verwenden möchte?

Muss ich auch die Dateikodierung mit setoder einstellen setglobal?

Kiraly Zoltan
quelle
Beachten Sie, dass es sicherer ist, die Codierung in Ihrem LOCALE festzulegen, als sie in Vim zu erzwingen, falls Sie eine Nicht-Unicode-Datei bearbeiten. Sie erhalten das gleiche Ergebnis wie standardmäßig LOCALE, und Sie werden keine fremden Zeichen durcheinander bringen, wenn Sie diese treffen.
Timss

Antworten:

89

TL; DR

Im ersten Fall mit set encoding=utf-8ändern Sie die Ausgabecodierung, die im Terminal angezeigt wird .

Im zweiten Fall mit set fileencoding=utf-8, werden Sie die Ausgabe der Datei kodiert ändern, wird geschrieben .

Wie von @Dennis angegeben, können Sie beide in Ihrem ~ / .vimrc festlegen, wenn Sie immer arbeiten möchten utf-8.

Mehr Details

Aus dem Wiki von VIM über die Arbeit mit Unicode

" encodingLegt fest, wie vim Zeichen intern darstellen soll . Utf-8 ist für die meisten Unicode-Varianten erforderlich."

" fileencodinglegt die Codierung für eine bestimmte Datei fest (lokal zu puffern) ;: setglobal legt den Standardwert fest. Es kann auch ein leerer Wert verwendet werden: Der Standardwert ist" Codierung ". Oder Sie möchten möglicherweise eine der UCS-Codierungen festlegen. Je nachdem, welche Zeichenmischung Sie verwenden, kann dieselbe Festplattendatei größer oder kleiner werden. Außerdem ist utf-8 in IIUC immer Big-Endian (High-Bit zuerst), während UCS Big-Endian oder Little-Endian sein können Wenn Sie es verwenden, müssen Sie wahrscheinlich "Bombe" setzen (siehe unten).

Adrien Lacroix
quelle
3
Entschuldigung, ich verstehe nicht. Was macht die Dateicodierung genauer?
Kiraly Zoltan
25
Im ersten Fall ändern Sie die Ausgabecodierung, die im Terminal angezeigt wird. Im zweiten Fall ändern Sie die Ausgabecodierung der geschriebenen Datei.
Adrien Lacroix
1
+1 Für eine kurze und süße Antwort, anstatt nur die offizielle Dokumentation zu wiederholen! :)
425nesp
Bei Bedarf ad-hoc direkt über die Kommandozeile vim -c "set encoding=utf-8" file.ext.
Hans Ginzel
87
set encoding=utf-8  " The encoding displayed.
set fileencoding=utf-8  " The encoding written to file.

Sie können auch beides in Ihrem festlegen, ~/.vimrcwenn Sie immer mit utf-8 arbeiten möchten.

Dennis
quelle
0

Sie können die Variable 'fileencodings' in Ihrer .vimrc festlegen.

Dies ist eine Liste von Zeichencodierungen, die beim Bearbeiten einer vorhandenen Datei berücksichtigt werden. Wenn eine Datei gelesen wird, versucht Vim, die zuerst erwähnte Zeichenkodierung zu verwenden. Wenn ein Fehler erkannt wird, wird der nächste in der Liste versucht. Wenn eine funktionierende Codierung gefunden wird, wird "Dateicodierung" darauf gesetzt. Wenn alle fehlschlagen, wird 'fileencoding' auf eine leere Zeichenfolge gesetzt, was bedeutet, dass der Wert von 'encoding' verwendet wird.

Sehen :help filencodings

Wenn Sie häufig mit z. B. cp1252 arbeiten, können Sie es dort hinzufügen:

set fileencodings=ucs-bom,utf-8,cp1252,default,latin9
Mike11
quelle