我注意到,在使用除 '标准英语' 以外的某些编码时,vim 无法正确识别和显示字符。
最容易看到的是打开一些来自网络上使用 cp437 编码页的 ASCII 图形或类似文件。
有没有办法让 vim 在打开文件时检查编码,并使用正确的编码打开文件?
您使用哪些编码作为最“便携”的编码(即最大数量的用户将遇到最少问题的编码)?
我注意到,在使用除 '标准英语' 以外的某些编码时,vim 无法正确识别和显示字符。
最容易看到的是打开一些来自网络上使用 cp437 编码页的 ASCII 图形或类似文件。
有没有办法让 vim 在打开文件时检查编码,并使用正确的编码打开文件?
您使用哪些编码作为最“便携”的编码(即最大数量的用户将遇到最少问题的编码)?
Vim需要检测编码,这可能会带来问题,因为文件通常不会明确说明它们的编码(一个明显的例外是具有头部编码属性的XML文件)。
您可以通过以下方式强制Vim使用不同的编码重新加载文件:
:e ++enc=cp437
如果你愿意,可以在你的 .vimrc 中设置默认编码。
这个页面提供了更多信息和链接,特别是关于编辑Unicode。 UTF-8 是最广泛使用的编码,也是你应该选择的默认编码。
++
是什么意思? - Yu Jiaaovi:set fileencoding=cp437
开头。fileencoding
选项应该解决您的问题。# vi: set fileencoding=cp437
// vi: set fileencoding=cp437
获取更多信息,在vim中输入:help modeline
。
set fileencodings=ucs-bom,utf-8,cp1252,default,latin9
您可以使用Unicode对文件进行编码,并在文件中设置字节顺序标记(BOM)。这将使vim适当地处理它,但某些编译器和程序可能会遇到问题。即使是一些基本的shell命令,如cat
,也可能在某些用例中表现不佳。
要执行此操作,请在vim中键入以下内容:
:set fileencoding=utf-8
:set bomb
:w
获取更多信息,请键入:
:help bomb
if len(&fenc) == 0
silent! exe "e! ++enc=utf-8"
endif