Vim có thể chỉ hiển thị các ký tự ASCII và coi các byte khác là dữ liệu nhị phân không?


13

Tôi đã biết vim -b, tuy nhiên, tùy thuộc vào miền địa phương được sử dụng, nó sẽ hiển thị các ký tự nhiều byte (như UTF-8) dưới dạng các chữ cái đơn lẻ.

Làm cách nào tôi có thể yêu cầu vimchỉ hiển thị các ký tự có thể in ASCII và coi phần còn lại là dữ liệu nhị phân, bất kể bộ ký tự?

Câu trả lời:


18

Khi sử dụng vim -b, điều này sẽ hiển thị tất cả các ký tự cao như <xx>:

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

Bất kỳ mã hóa byte đơn nào cũng sẽ hoạt động, vim sử dụng ASCII cho tất cả các ký tự thấp hơn và chúng được mã hóa cứng như có thể in được. Đặt isprintthành trống sẽ đánh dấu mọi thứ khác là không thể in được. Cài đặt uhexsẽ hiển thị chúng dưới dạng thập lục phân.

Đây là cách hiển thị thay đổi sau mỗi lệnh:

trước sau khi thiết lập mã hóa sau khi thiết lập isprint sau khi cài đặt uhex


Các tùy chọn này không phụ thuộc vào -b, sẽ chỉ đặt một vài tùy chọn khác, xem :help edit-binary. Tôi không thấy sự khác biệt về cách hiển thị các byte không thể in được (nó cũng hiển thị NUL mà không -bthường xuyên). Tôi hầu như không sử dụng -b, vì tôi sử dụng các tùy chọn này để kiểm tra các bảng mã lạ trong tệp văn bản.
pascal

Rất tiện dụng, tôi sẽ sử dụng nó khi dán từ Word vào văn bản. Những lệnh đó cũng có thể được đặt trên một dòng duy nhất:set encoding=latin1|set isprint=|set display+=uhex
Philip Kearns

1

Điều này nghe có vẻ như những gì bạn đang tìm kiếm. Mẹo này từ vimwiki có tiêu đề: Buộc UTF-8 Vim đọc Latin1 là Latin1 .

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

Cũng từ vim:helpbạn có thể làm điều này để xem thêm về mã hóa.

:help enc

đoạn trích từ :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
Điều đó khá hay, nhưng tôi muốn " vimchỉ hiển thị các ký tự có thể in ASCII" và giải pháp của bạn sử dụng bộ ký tự latin1 (đó là ISO-8859-1, một siêu ký tự của ASCII), do đó nó sẽ hiển thị các ký tự như étôi ' d thích được hiển thị như <e9>.
Totor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.