vim이 ASCII 문자 만 표시하고 다른 바이트를 이진 데이터로 취급 할 수 있습니까?


13

vim -b그러나 이미 알고 있는 로케일에 따라 UTF-8과 같은 멀티 바이트 문자를 단일 문자로 표시합니다.

vimASCII 인쇄 가능 문자 만 표시하고 문자 집합에 관계없이 나머지를 이진 데이터로 처리 하도록 요청 하려면 어떻게 해야합니까?

답변:


18

를 사용할 때 vim -b모든 높은 문자가 <xx>다음 과 같이 표시됩니다 .

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

모든 1 바이트 인코딩은 작동하며 vim은 모든 하위 문자에 ASCII를 사용하며 인쇄 가능한 것으로 하드 코딩됩니다. isprint비우기로 설정 하면 다른 모든 것은 인쇄 할 수없는 것으로 표시됩니다. 설정 uhex하면 16 진수로 표시됩니다.

각 명령 후 표시가 어떻게 변경되는지는 다음과 같습니다.

전에 인코딩을 설정 한 후 인쇄 설정 후 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: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 인쇄 가능한 문자로"및 솔루션은 라틴 문자 집합을 사용합니다 (즉, ISO-8859-1, ASCII의 상위 집합이다), 그것은 따라서 다음과 같은 문자를 표시 é하는 I ' d로 표시되는 것을 선호합니다 <e9>.
Totor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.