Vim 如何将多字节字符简单地视为一个字节序列?
我想用vim处理二进制文件。我用Vim 如何将多字节字符简单地视为一个字节序列?,vim,multibyte-characters,Vim,Multibyte Characters,我想用vim处理二进制文件。我用-b运行vim,我有isprint=和display+=uhex。我正在使用以下状态行: %我不知道为什么我的isprint被忽略了仔细阅读:h'isprint'。“从空格(ASCII 32)到“~”(ASCII 126)的字符总是直接显示,即使它们没有包含在“isprint”中或被排除在外。”@Matt我一定是表达错了。我对可打印字符显示为它们自己很满意。我说的是超出范围的“Ô。如果是“A”,我希望看到“A”。%o和isprint都使用Vim缓冲区(不是磁盘上
-b
运行vim,我有isprint=
和display+=uhex
。我正在使用以下状态行
:
%我不知道为什么我的isprint被忽略了
仔细阅读:h'isprint'
。“从空格(ASCII 32)到“~”(ASCII 126)的字符总是直接显示,即使它们没有包含在“isprint”中或被排除在外。”@Matt我一定是表达错了。我对可打印字符显示为它们自己很满意。我说的是超出范围的“Ô。如果是“A”,我希望看到“A”。%o
和isprint
都使用Vim缓冲区(不是磁盘上的文件!),该缓冲区根据encoding
设置进行编码,即UTF-8。在UTF-8中,代码变成了两个多字节字符。现在:h'isprint'
说:“总是包括256个及以上的多字节字符”。@Matt谢谢,我错过了那个位!所以唯一的方法就是我最终得到的结果,强制编码
为8位,然后为终端重新编码?啊,这太糟糕了,因为编码
只是全局的,所以它会影响其他窗口、菜单、消息等,而二进制
是本地缓冲区,所以,事实上,甚至不需要启动专用的vim-b
实例。但我没有看到更好的。