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 encodingund :help fileencodingin 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 chardetAnwendung, 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 chardetmanchmal 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 chardetist, 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-2mit 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-8nicht , 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 encodingkönnte seincp850, ISO-8859-1, UTF-8, ...
Sie können verwenden file yourfilename, um die von dotancohen vorgeschlagene Codierung oder chardetect(bereitgestellt von python-chardetoder uchardetabhängig von Ihrer Linux-Distribution) zu finden.