Vim può visualizzare solo caratteri ASCII e trattare altri byte come dati binari?


13

So già vim -b, tuttavia, a seconda delle impostazioni locali utilizzate, visualizza i caratteri multi-byte (come UTF-8) come singole lettere.

Come posso chiedere vimdi visualizzare solo caratteri stampabili ASCII e di trattare il resto come dati binari, indipendentemente dal set di caratteri?

Risposte:


18

Durante l'utilizzo vim -b, vengono visualizzati tutti i caratteri alti come <xx>:

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

Qualsiasi codifica a byte singolo funzionerà, vim usa ASCII per tutti i caratteri inferiori e li ha codificati come stampabili. L'impostazione isprintsu vuoto contrassegnerà tutto il resto come non stampabile. L'impostazione uhexli visualizzerà come esadecimali.

Ecco come cambia la visualizzazione dopo ogni comando:

prima dopo aver impostato la codifica dopo aver impostato isprint dopo aver impostato uhex


Queste opzioni non dipendono da -b, che imposteranno solo poche altre opzioni, vedi :help edit-binary. Non vedo alcuna differenza nel modo in cui vengono visualizzati i byte non stampabili (mostra NUL senza -banche di solito). Per lo più non sto usando -b, perché uso queste opzioni per controllare strane codifiche nei file di testo.
Pascal

Molto utile, lo userò per incollare Word in testo. Questi comandi possono anche essere inseriti in un'unica riga:set encoding=latin1|set isprint=|set display+=uhex
Philip Kearns,

1

Questo suona come quello che stai cercando. Questo suggerimento dal vimwiki intitolato: Forzare UTF-8 Vim a leggere Latin1 come Latin1 .

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

Inoltre vim, :helppuoi farlo per vedere di più sulle codifiche.

:help enc

estratto da :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).
    ...
    ...

3
È piuttosto carino, ma mi piacerebbe " vimvisualizzare solo caratteri stampabili ASCII" e la tua soluzione utilizza il set di caratteri latin1 (ovvero ISO-8859-1, un superset di ASCII), mostrerà quindi caratteri come éI ' d preferisce essere visualizzato come <e9>.
Totor
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.