2012-10-19 3 views
17

Ich bearbeite alle Arten von Dateien mit Vim (wie die meisten Vim-Benutzer sicher tun). Ein Fehler, den ich habe, ist, was Vim macht, wenn ich auf eine Datei mit einer seltsamen Codierung stoße. Die meisten Redakteure (heutzutage) machen einen guten Stich bei der Erkennung von Dateicodierungen. Im Allgemeinen jedoch nicht. Und Sie müssen eingeben, zum Beispiel:Kann die UTF16-Dateicodierung beim Öffnen einer Datei dieses Typs automatisch festgelegt werden?

:e ++enc=utf-16le 

erneut lesen Sie die Datei in UTF-16 (Sonst Sie eine Masse von @ -Zeichen erhalten)

Ich habe um gesucht und haben Skripte gesehen wie set_utf8.vim kann eine bestimmte Dateicodierung erkennen. Gibt es jedoch eine allgemeinere Lösung? Es ist mir ein bisschen langweilig, manuell herausfinden zu müssen, was die Dateicodierung ist und die Hilfe zu konsultieren, wenn ich eine ungewöhnliche Datei öffne.

Antwort

10

Hinzufügen der Codierung Namen 'fileencodings' sollte es tun:

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

Alternativ gibt es Plugins wie AutoFenc und fencview.

+0

+1 Diese sehen sehr nützlich aus, obwohl sie leider nicht auf meinen BOMless UTF16-Protokolldateien funktionieren, ach ja, ich werde nur eine bestimmte AutoFileCmd für diese hinzufügen ... Danke, aber! – Benj

2

Haben Sie eine Byte-Order-Markierung? Vim sollte dies erkennen und entsprechend arbeiten. Von the doc - section 45.4:

Wenn Sie anfangen zu bearbeiten, die 16-Bit-Unicode-Datei, und es hat eine BOM, Vim dies erkennt und die Datei auf utf-8 konvertieren, wenn es zu lesen. Die Option "Dateicodierung" (ohne s am Ende) wird auf den erkannten Wert gesetzt. In diesem Fall ist es "utf-16le". Das heißt, es ist Unicode, 16-Bit und Little-Endian. Dieses Dateiformat ist unter MS-Windows (z. B. für Registrierungsdateien) üblich.

+0

Hmm, diese bestimmte Datei eine BOM hat nicht gut zu wissen (die unter Windows ungerade ist), dass diese auf Dateien mit einer BOM funktionieren würde obwohl ... – Benj

+1

Das funktioniert nicht für mich. Gvim unter Windows, Datei > xxd. \ Utf16.txt 00000000: fffe 4100 4200 a300 2400 ac20 6300 6400 ..A.B ... $ .. c.d. 00000010: 6500 0d00 0a00 e ..... Wenn ich "gvim utf16.txt" mache, sehe ich '^A^@ B^@ £^@ $^@ ¬ c^@ d^@ e^@^M^@ '... (Entschuldigung für die Formatierung, keine Ahnung, wie man vorformatierten Text in einem Kommentar macht ...) –

0

diesen Code in Ihre .vimrc:

if has("multi_byte") 
    if &termencoding == "" 
    let &termencoding = &encoding 
    endif 
    set encoding=utf-8 
    setglobal fileencoding=utf-8 
    "setglobal bomb 
    set fileencodings=ucs-bom,utf-8,latin1 
endif 
Verwandte Themen