配置 .vimrc 解决 Vim / gVim 在中文 Windows 下的字符编码问题

转载自:-杨博的日志 - 网易博客 html

Vim / gVim 在中文 Windows 下的字符编码有两个问题: vim

  1. 默认没有编码检测功能
  2. 若是一个文件自己采用的字符集比 GBK 大(如 UTF-八、UTF-1六、GB18030),那么其中没法在 GBK 中对应的字符都会出现乱码,保存时会丢失。即便编辑文件时正确检测出文件格式也无济于事。

第一个问题的解决办法是在 ~/.vimrc 中加入如下配置:编辑器

set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

第二个问题的解决办法是强制要求 Vim 的内部编码采用某种 UTF 编码。好比 UTF-8:google

set encoding=utf-8

可是,把 Vim 的内部编码设为 UTF-8 会带来如下新问题 编码

  1. 使用非 GUI 界面的 vim 时会乱码
  2. 提示信息(好比E492: 不是编辑器的命令: foo)会乱码

要解决非 GUI 界面的 vim 的乱码问题,须要设置终端编码为系统默认编码:.net

set termencoding=cp936

而要让提示信息不乱码则要须要使用 UTF-8 版本的提示信息:日志

language messages zh_CN.UTF-8

综上所述,在中文 Windows 下正确配置字符编码,须要把如下内容加入你的 ~/.vimrc 中code

set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set encoding=utf-8
set termencoding=cp936
language messages zh_CN.UTF-8

特别提醒,以上代码应该放在 .vimrc 的最顶端,由于 vim 运行过程当中 set encoding=xxx 是很危险的,会致使各类乱码(参见这里)。我本身所用的完整 .vimrc 放在https://sites.google.com/site/popatry/etc/-vimrc,持续更新。htm

相关文章
相关标签/搜索