it-swarm.com.de

Wie kann ich die Kodierung einer Datei mit vim ändern?

Ich bin es gewohnt, mit vim die Zeilenenden einer Datei zu ändern:

$ file file
file: ASCII text, with CRLF line terminators
$ vim file
:set ff=mac
:wq
$ file file
file: ASCII text, with CR line terminators

Ist es möglich, auf ähnliche Weise die Unicode-Codierung einer Datei zu ändern? Ich versuche Folgendes, was nicht funktioniert:

$ file file.xml
file.xml: Unicode text, UTF-16, little-endian
$ vim file
:set encoding=utf-8
:wq
$ file file.xml
file.xml: Unicode text, UTF-16, little-endian

Ich sah jemand sagt , dass er "fileencoding = utf-8 setzen und dann die Datei aktualisieren und schreiben konnte, und es funktioniert", aber mir scheint etwas zu fehlen, oder er war verwirrt. Ich weiß nicht, was er mit "then update" gemeint hat.

223
skiphoppy

Aus dem doc :

: write ++ enc = utf-8 russian.txt

Sie sollten also in der Lage sein, die Codierung als Teil des Schreibbefehls zu ändern.

242
Brian Agnew

Beachten Sie, dass es einen Unterschied zwischen gibt

Kodierung einstellen

und

Dateicodierung einstellen

Im ersten Fall ändern Sie die im Terminal angezeigte Ausgabecodierung. Im zweiten Fall ändern Sie die Ausgabecodierung der geschriebenen Datei.

156
Johan

Warum verwenden Sie nicht einfach iconv, während Sie vim verwenden, um dies zu tun? Ich meine - das Laden des Texteditors, nur um die Codierungskonvertierung durchzuführen, scheint zu groß für einen zu kleinen Nagel zu sein.

Gerade:

iconv -f utf-16 -t utf-8 file.xml > file.utf8.xml

Und du bist fertig.

77
user80168

Genau wie bei Ihren Schritten sollte das Einstellen der Dateicodierung funktionieren. Ich möchte jedoch eine "Set-Bombe" hinzufügen, um den Editor dabei zu unterstützen, die Datei als UTF8 zu betrachten.

$ vim file
:set bomb
:set fileencoding=utf-8
:wq
52
Francis

Es kann nützlich sein, das Kodierung direkt in der Befehlszeile zu ändern, bevor die Datei gelesen wird:

rem On Microsoft Windows
vim --cmd "set encoding=utf-8" file.ext
# In *nix Shell
vim --cmd 'set encoding=utf-8' file.ext

Siehe ab , --cmd .

4
Hans Ginzel