在开发跨平台项目中,由于windows和Linux环境下的编码格式不同,在Ubuntu系统中使用VIM编辑代码时中文显示乱码,设置VIM配置文件~/.vimrc,在配置文件中加入下面的配置:
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
虽然该方式能解决中文显示乱码的问题,但会造成文件中中文编码改变,使用svn或git管理代码时,这些编码改变会被识别为改变。
VIM编码格式中常用的配置选项有4种,分别是encoding、fileencoding、fileencodings、termencoding。
1. encoding :VIM 使用的字符编码格式,包括 VIM 的 buffer (缓冲区)、菜单文本、消息文本等。可在~/.vimrc 中改变它的值,如果打开的文件编码与该属性配置的编码不同,那么VIM会将编码自动转换到这种编码然后再显示。
2. fileencoding :VIM 当前编辑的文件的字符编码方式,VIM保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此);如果它的值与encoding不一样,那么保存的时候VIM会自动把文件内容由encoding的编码转换为fileencoding配置编码再保存。而读取文件的时候,该选项的值会自动同步为fileencodings配置的有效编码。
3. fileencodings :此项目配置的是一个编码列表,止Vim在读取文件的时候,会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面。
4. termencoding :VIM 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的 Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。
所以,在设置~/.vimrc设置如下:
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set fileencoding=gbk
set termencoding=utf-8
set encoding=utf-8