VIM中与编码有关的选项
encoding
可简写为enc。功能是设置VIM的内码,即默认以何种编码工作。这个是最重要的编码设置了,如果设置不好,可能会导致VIM的界面语言和提示语言乱码。Windows下面的gVIM安装中文文档后乱码的情况就是因为这个设置不当造成的。
这里说一下 Windows 下面 gVIM 安装 中文文档 后乱码的情况。
上面的VIM的中文文档有两个版本: vimcdoc-1.7.0-setup.exe
和 vimcdoc-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
- 文章ID:1023
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/vim-encoding/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。