vimはASCII文字のみを表示し、他のバイトをバイナリデータとして処理できますか?


13

私はすでに知っているvim -b、それは単一の文字として(UTF-8のような)マルチバイト文字を表示し、使用するロケールに応じて、しかし、。

vimASCIIの印刷可能文字のみを表示し、文字セットに関係なく残りをバイナリデータとして扱うようにするにはどうすればよいですか?

回答:


18

を使用するとvim -b、すべての高文字が次のように表示されます<xx>

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

任意のシングルバイトエンコーディングが機能します。vimはすべての下位文字にASCIIを使用し、印刷可能としてハードコード化しています。isprint空に設定すると、他のすべてが印刷不可としてマークされます。設定uhexすると、16進数として表示されます。

各コマンドの後に表示がどのように変化するかを次に示します。

前 エンコード設定後 isprintを設定した後 uhexを設定した後


これらのオプションは依存せず-b、他のオプションをいくつか設定するだけ:help edit-binaryです。印刷できないバイトの表示方法に違いはありません(-b通常はNULも表示されません)。私は-bこれらのオプションを使用してテキストファイル内の奇妙なエンコーディングをチェックするため、ほとんど使用していません。
パスカル

非常に便利で、Wordからテキストに貼り付けるときに使用します。これらのコマンドは、単一のライン上に置くことができます:set encoding=latin1|set isprint=|set display+=uhex
フィリップ・カーンズを

1

これはあなたが探しているもののように聞こえます。vimWiki からのこのヒント: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印刷可能な文字に」、およびソリューションがlatin1の文字セット使用しています(ISO-8859-1、ASCIIのスーパーセットである)、それは、このようななどの文字が表示されますéI」をdとして表示されるのが好き<e9>です。
トーター14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.