Antworten:
Die Einstellung für die Dateicodierung zeigt die Codierung des aktuellen Puffers an:
:set fileencoding
fileencoding=utf8
Es gibt wirklich keine übliche Methode, um die Codierung einer Klartextdatei zu bestimmen, da diese Informationen nicht in der Datei selbst gespeichert werden - mit Ausnahme von UTF-8-Dateien, bei denen eine sogenannte Stückliste vorhanden ist, die die Codierung angibt. Aus diesem Grund haben XML- und HTML-Dateien Zeichensatz-Metatags.
Sie können eine bestimmte Kodierung mit der Einstellung "Kodierung" erzwingen. Siehe :help encoding
und :help fileencoding
in Vim, wie der Editor mit diesen Einstellungen umgeht. Sie können Ihrem vimrc auch mehrere Dateicodierungseinstellungen hinzufügen, damit vim versucht, anhand der aufgelisteten Einstellungen zu ermitteln.
Beachten Sie, dass die Kodierung von Dateien an keiner Stelle in einer Datei explizit angegeben wird . Daher müssen VIM und andere Anwendungen die Codierung erraten. Die kanonische Methode hierfür ist die chardet
Anwendung, die in VIM folgendermaßen ausgeführt werden kann:
:!chardet %
Die Antwort von jtimberman zeigt Ihnen die Kodierung des aktuellen Puffers, die möglicherweise nicht mit der Kodierung der Datei auf der Festplatte übereinstimmt . Daher werden Sie feststellen, dass chardet
manchmal eine andere Codierung als VIM angezeigt wird, insbesondere wenn Sie VIM so konfiguriert haben, dass immer eine bestimmte Codierung verwendet wird (z. B. UTF-8).
Das Schöne daran chardet
ist, dass es eine Konfidenzbewertung für seine Vermutung gibt, während VIM bei der Vermutung der Codierung falsch sein kann (und oft auch falsch ist), wenn es nicht viele Zeichen über \ x7F (ASCII 127) gibt. Wenn Sie beispielsweise eine einzelne א
Datei zu einer langen Datei mit PHP-Code hinzufügen, wird angenommen chardet
, dass die Datei ISO-8859-2
mit einem Konfidenzniveau von 0,72 vorliegt , wohingegen das Hinzufügen der etwas längeren Phrase שלום, עולם!
UTF-8 mit einem Konfidenzniveau von 0,99 ergibt. In beiden Fällen set fileencoding?
zeigte UTF-8
nicht , weil die Datei auf der Festplatte UTF-8 war, sondern weil VIM ist so konfiguriert , UTF-8 intern zu verwenden.
chardet <file>
. Trotzdem guter Vorschlag.
Ich habe folgendes gefunden: https://vim.fandom.com/wiki/Reloading_a_file_using_a_different_encoding
Sie können eine Datei mit einer anderen Codierung erneut laden, wenn Vim die richtige Codierung nicht erkennen konnte:
:e ++enc=<encoding>
wo encoding
könnte seincp850, ISO-8859-1, UTF-8, ...
Sie können verwenden file yourfilename
, um die von dotancohen vorgeschlagene Codierung oder chardetect
(bereitgestellt von python-chardet
oder uchardet
abhängig von Ihrer Linux-Distribution) zu finden.