VIM中与编码有关的选项

encoding

可简写为enc。功能是设置VIM的内码,即默认以何种编码工作。这个是最重要的编码设置了,如果设置不好,可能会导致VIM的界面语言和提示语言乱码。Windows下面的gVIM安装中文文档后乱码的情况就是因为这个设置不当造成的。

这里说一下 Windows 下面 gVIM 安装 中文文档 后乱码的情况。

上面的VIM的中文文档有两个版本: vimcdoc-1.7.0-setup.exevimcdoc-1.7.0-setup-unicode.exe 。但这两个版本的编码都是utf-8的,不知道是不是作者的失误。

安装程序将文档安装在 $VIM/vimfiles/doc 下,同时在 $VIM/vimfiles/plugin/ 下面安装了一个插件 vimcdoc.vim,并在该插件中设置了 encoding=utf-8 ,这导致gVIM的界面和提示文字乱码。因为在Windows下面,界面和提示文字编码是cp936。

解决的方法,将 set encoding=utf-8 注释,或者改为 set encoding=chinese

如果已经在 _vimrc 中设置过 secoding=utf-8 ,则也要将其注释掉才行。

这样设置的gVim界面不会有问题,但默认保存的文件编码就变成了cp936(即GB2312),如果你和我一样偏爱 utf-8 ,就还要设置 fileencoding=utf-8

2015-01-21 更新: 我创建了一个项目 vimfiles ,使用它可以自动下载文档。

fileencodings

可简写为 fencs。功能是设置一个列表,VIM打开文本文件的时候根据这个列表的顺序来检测编码。我的设置是这样的:

set fileencodings=ucs-bom,utf-8,chinese,latin1

注意顺序是不能错的。ucs-bom必须要设置为第一个,utf-8必须是第二个,latin1必须是最后一个。为什么这样设置可以看VIM文档:

:help fencs

另外,看到网上的某些教程把gbk、prc、gb2312、gb18030、cp936都设置在这个列表中,其实是没有必要的。

在VIM中,对于中文,Windows 下和 Unix/Linux 下的编码表示是不同的,Windows 下是 cp936,Unix/Linux 下是 eus-cn。而gbk、prc等等都是中文编码阿的别名。因此,正确的方法是使用别名。chinese和prc都是中文的别名,它们在 Windows 下面和 Unix/Linux 下面分别对应正确的编码。详细介绍可查看VIM文档:

:help encoding-names

fileencoding

可简写为fenc。功能是设置VIM编辑的文件的编码。这个和encoding可以不同。如果不对其进行设置,其值与encoding相同。因此如果在Windows下,默认保存的文件编码就是gb2312的,而此时若希望默认保存的文件编码为utf-8,则可以在vimrc文件中如此设置:

set fileencoding=utf-8

termencoding

可简写为tenc。功能是设置终端使用的编码。这个貌似没什么用。我开始准备用它来解决Windows下gVim安装中文文档乱码的问题,可发现不管用。

++enc

也可写成 ++encoding。功能是强制指定编码。例如,正在编辑一个编码为gb2312的文件,想将其转存为utf-8编码,可以这样操作:

:w ++enc=utf-8 newfile.txt