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: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 angenommenchardet
, dass die DateiISO-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ällenset fileencoding?
zeigteUTF-8
nicht , weil die Datei auf der Festplatte UTF-8 war, sondern weil VIM ist so konfiguriert , UTF-8 intern zu verwenden.quelle
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:
wo
encoding
könnte seincp850, ISO-8859-1, UTF-8, ...
Sie können verwenden
file yourfilename
, um die von dotancohen vorgeschlagene Codierung oderchardetect
(bereitgestellt vonpython-chardet
oderuchardet
abhängig von Ihrer Linux-Distribution) zu finden.quelle