Kann vim nur ASCII-Zeichen anzeigen und andere Bytes als Binärdaten behandeln?

13

Ich weiß vim -bjedoch bereits, dass je nach verwendetem Gebietsschema Mehrbyte-Zeichen (wie UTF-8) als einzelne Buchstaben angezeigt werden.

Wie kann ich verlangen vim, nur ASCII-druckbare Zeichen anzuzeigen und den Rest als Binärdaten zu behandeln, unabhängig vom Zeichensatz?

Totor
quelle

Antworten:

18

Bei Verwendung vim -bwerden alle hohen Zeichen wie folgt angezeigt <xx>:

set encoding=latin1
set isprint=
set display+=uhex

Jede Einzelbyte-Codierung funktioniert, vim verwendet ASCII für alle niedrigeren Zeichen und lässt sie als druckbar fest codieren. Rahmenisprint leer" einstellen, wird alles andere als nicht druckbar markiert. Die Einstellung uhexzeigt sie als Hexadezimalzahl an.

So ändert sich die Anzeige nach jedem Befehl:

Vor nach dem Einstellen der Codierung nach dem Einstellen von isprint nach dem Einstellen von uhex

Pascal
quelle
Diese Optionen hängen nicht davon ab -b, dass nur ein paar andere Optionen festgelegt werden, siehe :help edit-binary. Ich sehe keinen Unterschied darin, wie nicht druckbare Bytes angezeigt werden (es zeigt -bnormalerweise auch NUL ohne ). Ich benutze es meistens nicht -b, weil ich diese Optionen benutze, um seltsame Kodierungen in Textdateien zu überprüfen.
Pascal
Sehr praktisch, ich werde es beim Einfügen von Word in Text verwenden. Diese Befehle können auch in eine einzelne Zeile geschrieben werden:set encoding=latin1|set isprint=|set display+=uhex
Philip Kearns
1

Das hört sich nach dem an, wonach Sie suchen. Dieser Tipp aus dem vimWiki mit dem Titel: UTF-8 Vim zwingen, Latin1 als Latin1 zu lesen .

$ vim -c "e ++enc=latin1" file.txt

Auch von vim's :helpkönnen Sie dies tun, um mehr über Kodierungen zu erfahren.

:help enc

Ausschnitt aus :help enc

'encoding' 'enc'        string (default: "latin1" or value from $LANG)
                        global
                        {only available when compiled with the +multi_byte
                        feature}
                        {not in Vi}
    Sets the character encoding used inside Vim.  It applies to text in
    the buffers, registers, Strings in expressions, text stored in the
    viminfo file, etc.  It sets the kind of characters which Vim can work
    with.  See encoding-names for the possible values.

    NOTE: Changing this option will not change the encoding of the
    existing text in Vim.  It may cause non-ASCII text to become invalid.
    It should normally be kept at its default value, or set when Vim
    starts up.  See multibyte.  To reload the menus see :menutrans.

    This option cannot be set from a modeline.  It would most likely
    corrupt the text.

    NOTE: For GTK+ 2 it is highly recommended to set 'encoding' to
    "utf-8".  Although care has been taken to allow different values of
    'encoding', "utf-8" is the natural choice for the environment and
    avoids unnecessary conversion overhead.  "utf-8" has not been made
    the default to prevent different behavior of the GUI and terminal
    versions, and to avoid changing the encoding of newly created files
    without your knowledge (in case 'fileencodings' is empty).
    ...
    ...
slm
quelle
3
Das ist ziemlich nett, aber ich würde gerne „ vimnur Anzeige druckbare ASCII - Zeichen“, und Ihre Lösung verwendet den latin1 charset (dh ISO-8859-1, eine Obermenge von ASCII), es wird also Zeichen angezeigt werden , wie édie I‘ d möchte lieber angezeigt werden als <e9>.
Totor