Lassen Sie vim Konvertierungsfehler beim Lesen der Datei ignorieren


1

Ich habe eine UTF-16-Datei mit einer Stückliste. Ich habe folgende Dateicodierungen festgelegt:

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 ^@Nullmarkierungen. Wenn vim gezwungen wird, die Datei als UCS ( :e ++enc=ucs-bom) zu lesen, wird die Datei erfolgreich gelesen, es wird jedoch "CONVERSION ERROR in line {nn}" (Konvertierungsfehler in Zeile {nn}) gemeldet, der Rest der Datei wurde jedoch korrekt konvertiert. Wenn das fehlerhafte Zeichen entfernt wird, wird die Datei korrekt interpretiert und angezeigt.

Gibt es überhaupt vim zu haben, Konvertierungsfehler zu ignorieren? Das Erzwingen der Codierung bei jeder gültigen Stückliste ist etwas ärgerlich.

Antworten:


0

Ein Konvertierungsfehler bedeutet, dass die Daten beschädigt sind (oder nach dem Schreiben der Datei beschädigt wurden). Daher gibt es keine globale Einstellung, um diese zu ignorieren. In Ihrem Fall ist dies möglicherweise nur ein einzelnes unwichtiges Zeichen, in einem anderen Fall wird die gesamte Datei jedoch unbrauchbar.

Sie können den Konvertierungsfehler über das ++bad=...Argument (cp. :help ++bad) Unterdrücken , das :editgenau wie das vorangestellt wird++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>

Es ist nicht so sehr zu unterdrücken, aber das Verhalten, das :e ++enchat - dh, lesen Sie die Datei, aber warnen Sie vor dem Konvertierungsfehler (dh, ich möchte wissen, dass es dort ist, damit ich meine eigene Meinung über die Datei bilden kann). Ich werde es versuchen und sehen, was ich zurück bekomme.
Chris J
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.