Czy vim może wyświetlać tylko znaki ASCII i traktować inne bajty jako dane binarne?


13

Wiem vim -bjednak, że w zależności od zastosowanych ustawień regionalnych wyświetla znaki wielobajtowe (jak UTF-8) jako pojedyncze litery.

Jak mogę poprosić vimo wyświetlanie tylko znaków drukowalnych ASCII, a resztę traktować jak dane binarne, bez względu na zestaw znaków?

Odpowiedzi:


18

Podczas używania vim -bwyświetla wszystkie wysokie znaki jako <xx>:

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

Każde kodowanie jednobajtowe będzie działać, vim używa ASCII dla wszystkich niższych znaków i zapisuje je na stałe jako do wydruku. Ustawienie isprintpustego oznacza wszystko inne jako niedrukowalne. Ustawienie uhexwyświetli je jako szesnastkowe.

Oto jak zmienia się wyświetlacz po każdym poleceniu:

przed po ustawieniu kodowania po ustawieniu odcisku po ustawieniu uhex


Te opcje nie zależą od -b, które ustawią tylko kilka innych opcji, zobacz :help edit-binary. Nie widzę różnicy w sposobie wyświetlania bajtów niedrukowalnych ( -bzwykle pokazuje NUL bez ). Najczęściej nie używam -b, ponieważ używam tych opcji do sprawdzania dziwnych kodowań w plikach tekstowych.
pascal

Bardzo przydatne, użyję go podczas wklejania ze Worda na tekst. Te polecenia można również umieścić w jednym wierszu:set encoding=latin1|set isprint=|set display+=uhex
Philip Kearns

1

Brzmi jak to, czego szukasz. Ta wskazówka z vimwiki zatytułowana: Zmuszanie VT UTF-8 do czytania Latin1 jako Latin1 .

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

Również z vim„s :helpmożna to zrobić, aby dowiedzieć się więcej na temat kodowania.

:help enc

fragment :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
To całkiem miłe, ale chciałbym „ vimwyświetlać tylko znaki drukowalne ASCII”, a twoje rozwiązanie używa zestawu znaków Latin1 (to jest ISO-8859-1, nadzbiór ASCII), w ten sposób wyświetla znaki takie jak é„I” raczej wolę być wyświetlany jako <e9>.
Totor
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.