以前在设置vi的编码方式设定的时候, 是直接从网上找的相关的方法, 主要是在/etc/vimrc文件中添加如下的内容:
set fileencodings=utf-8,latin-1, gb2312,gbk,gb18030
set termencoding=utf-8
set encoding=prc
这样做可以使vi正确的显示文件内容是中的文件.
但是存在一个问题,就是如果要在vi中显示中文文件名的时候就会乱码.
之前我在网上搜索相关的问题, 几乎没有人提出这个问题, 然后我就容忍了一段时间,但是很不爽.
今天下决心要解决这个问题.
在网上找了很多材料之后,终于解决了这个问题.
这个问题主要是涉及到了vim中的编码方式. 与vi编码相关的有几个选项:
encoding、fileencoding、fileencodings、termencoding,它们的意义如下:
* encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等;
* fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此);
* fileencodings: Vim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面;()
注意顺序是不能错的。ucs-bom必须要设置为第一个,utf-8必须是第二个,latin1必须是最后一个。为什么这样设置可以看VIM文档:
:help fencs
* termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。
由于 Unicode 能够包含几乎所有的语言的字符,而且 Unicode 的 UTF-8 编码方式又是非常具有性价比的编码方式 (空间消耗比 UCS-2 小),因此建议 encoding 的值设置为 utf-8。这么做的另一个理由是 encoding 设置为 utf-8 时,Vim 自动探测文件的编码方式会更准确 (或许这个理由才是主要的 ;)。我们在中文 Windows 里编辑的文件,为了兼顾与其他软件的兼容性,文件编码还是设置为 GB2312/GBK 比较合适,因此 fileencoding 建议设置为 chinese (chinese 是个别名,在 Unix 里表示 gb2312,在 Windows 里表示 cp936,也就是 GBK 的代码页)。可以查看vim文档:
:help encoding-names
所以, 这样设置vimrc文件, 就会解决上面的问题:
set fileencodings=utf-8,chinese,latin-1
set termencoding=utf-8
set encoding=utf-8
参考网页:http://zengrong.net/post/1023.htm
http://www.guizhu.net/knowledge/post/104.html
http://www.cnblogs.com/xkfz007/archive/2011/11/17/2252019.html