Bringen Sie vim dazu, Konvertierungsfehler beim Lesen von Dateien zu ignorieren

Bringen Sie vim dazu, Konvertierungsfehler beim Lesen von Dateien zu ignorieren

Ich habe eine UTF-16-Datei mit einer BOM. Ich habe die Dateikodierungen wie folgt eingestellt:

set fencs=ucs-bom,utf-16le,utf-8,default,latin1    

Aufgrund eines Zeichens in einer Zeile erkennt vim UTF-16 jedoch nicht automatisch und verwendet standardmäßig Latin1 mit allen ^@Null-Markierungen. Wenn vim gezwungen wird, die Datei als UCS ( :e ++enc=ucs-bom) zu lesen, liest es die Datei erfolgreich, meldet jedoch „KONVERTIERUNGSFEHLER in Zeile {nn}“, aber abgesehen von diesem einen Zeichen wurde der Rest der Datei korrekt konvertiert. Wenn das fehlerhafte Zeichen entfernt wird, wird die Datei korrekt interpretiert und angezeigt.

Gibt es eine Möglichkeit, Konvertierungsfehler von vim zu ignorieren? Das Erzwingen der Kodierung jedes Mal, wenn eine gültige BOM vorhanden ist, ist etwas nervig.

Antwort1

Ein Konvertierungsfehler bedeutet, dass Daten beschädigt sind (oder nach dem Schreiben der Datei beschädigt werden). Es gibt also keine globale Einstellung, um diese zu ignorieren. In Ihrem Fall kann das nur ein einzelnes, belangloses Zeichen sein, aber in einem anderen Fall kann es die gesamte Datei stillschweigend unbrauchbar machen.

Den Konvertierungsfehler können Sie durch das ++bad=...Argument (vgl. :help ++bad) unterdrücken, das :editgenau wie das++enc=...

Wenn Sie wirklich alle Konvertierungsfehler unterdrücken möchten, müssen Sie einen benutzerdefinierten :EditBadBefehl schreiben:

:command! -bar -bang -nargs=* -complete=file EditBad edit<bang> ++bad=? <args>

verwandte Informationen