Чи може vim відображати лише символи ASCII та обробляти інші байти як бінарні дані?


13

Я вже знаю vim -b, однак, залежно від використовуваної мови, він відображає багатобайтові символи (наприклад, UTF-8) у вигляді окремих літер.

Як я можу попросити vimвідображати лише символи для друку ASCII, а решта розглянути як бінарні дані, незалежно від шаблону?

Відповіді:


18

При використанні vim -bце відображає всі високі символи як <xx>:

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

Будь-яке однобайтове кодування спрацює, vim використовує ASCII для всіх нижчих символів і має їх жорстко кодовані як для друку. Якщо встановити isprintпорожнє, все інше позначатиметься як недруковані. Налаштування uhexвідображатиме їх як шістнадцятковий.

Ось як змінюється дисплей після кожної команди:

раніше після встановлення кодування після встановлення isprint після встановлення uhex


Ці параметри не залежать від того -b, що просто встановить кілька інших варіантів, див :help edit-binary. Я не бачу різниці в тому, як відображаються недруковані байти ( -bяк правило, це відображає NUL без ). Я здебільшого не використовую -b, тому що ці параметри використовую для перевірки дивних кодувань у текстових файлах.
pascal

Дуже зручно, я буду використовувати його під час вставлення з Word у текст. Ці команди також можна поставити в один рядок:set encoding=latin1|set isprint=|set display+=uhex
Philip Kearns

1

Це звучить як те, що ви шукаєте. Ця порада з vimвікі під назвою: Примушуючи UTF-8 Vim читати Latin1 як Latin1 .

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

Також з vim's :helpви можете зробити це, щоб дізнатися більше про кодування.

:help enc

уривок з :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
Це дуже приємно, але я хотів би " vimвідображати лише символи для друку ASCII", і ваше рішення використовує char1 latin1 (тобто ISO-8859-1, набір ASCII), таким чином він відображатиме символи, такі як éя " d, швидше, як, щоб їх відображали як <e9>.
Тотор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.