注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

为着理想勇敢前进

 
 
 

日志

 
 

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

2011-02-20 16:44:14|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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

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

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

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

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

set encoding=utf-8

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

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

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

set termencoding=cp936

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

language messages zh_CN.UTF-8

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

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,持续更新。

  评论这张
 
阅读(2454)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018