Vim 7.3/7.4中文乱码,必须要记下来,太tmd的坑人了

我的OS环境如下:

Win7 64-Bit English Version

用Vim有一段时间了,期间各种配置,各种插件用的都还不错。

突然有一天,编辑一个含有中文字符的html文件,这一打开,不得了了,满屏的都是“口”,于是乎google之、、

搜到有很多如下解决办法的:

1.

"处理文本中显示乱码
      set encoding=utf-8
      set fileencodings=utf-8,chinese,latin-1
      if has("win32")
      set fileencoding=chinese
      else
      set fileencoding=utf-8
      endif
   
      "处理菜单及右键菜单乱码
      source $VIMRUNTIME/delmenu.vim
      source $VIMRUNTIME/menu.vim
   
      "处理consle输出乱码
      language messages zh_CN.utf-8

 有的甚至说是删掉$VIM/Vim73(74)/lang, 然后在进行如上配置。

照着做了,失败。

2.

在vim目录下,将代码写到_vimrc文件的function函数前面:

  colo torte
    set fileencodings=utf-8,gb2312,gbk,gb18030
    set termencoding=utf-8

在windows下,gvim打开utf-8格式文档还是会显示中文乱码,再添加:

    set encoding=utf-8
    let $LANG ='zh_CN.UTF-8'
    source $VIMRUNTIME/delmenu.vim
    source $VIMRUNTIME/menu.vim

 也照着这么配置了,也失败了、、、

大家的思路基本上都是设置fileencodings, fileencoding和 encoding。

在我快要放弃的临别之际,搜索到一篇博文,跟我的简直是一个情况,原来是因为在英文版win 7 下的Vim不知道如何显示双倍字符宽度的汉语。于是按照其配置下来,完美的解决了我的问题。

原博文如下:

Vim无疑是世间最强的编辑器(之一)了,但是强大的代价有时候就是必须要花上更多的功夫来应付。中文的编码问题无疑是中文用户值得一提的一个典型问题了,作为老用户的我为此曾经狠狠的中枪过三次,到了最近这一次,我决定要好好的写下来,为了记忆日渐衰退的自己留下一点方便查找的记录了。

大概七八年前吧,那时候还对Vim不算熟悉,刚从UE转投而来的我,当头就吃了一记闷棍,花了好大的功夫才理解了原来还有用户自己捣鼓好文件编码这回事情,到处查找之后,算是得到了如下的一点知识:

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

这些配置在网上随便一查,就不难理解:

encoding用来指导Vim理解自己内部处理和显示的缺省编码;

fileencodings则是决定Vim识别文件编码格式的识别序列,应当按照从严格到宽松的角度来摆放;

fileencoding设置文件保存时的编码格式;

于是,在这样一个配置的加持下,我无风无雨的渡过了好几年的Vim使用——正当我志得意满,自以为对Vim已经比较了解的情况下,两年前有次在Linux下Term中使用Vim过程中却遇到了久违的乱码,当我试了好几次都无法解决之后,才终于开始满世界的寻求解决(过程中,甚至萌生过转投其他编辑器的想法),在数次绝望之后终于找到了原因,依赖于「termencoding」这个参数指导的term侧的显示终于的得到了解决,至此我以为万事大吉,甚至把Vimrc都留档备份,准备以后千秋万代了:

set termencoding=gbk

好吧,高潮在后头,就在最近刚刚装了个新机器,英文版的Windows7,Vim7.4——然后,赫然发现方块乱码又出现了!我各种挣扎和搜索,都没有找到原因,再次绝望之际,一篇小小的文章却告诉我,原来我一直以为还是编解码识别导致的问题,实际上却是货真价实的显示问题罢了——英文Windows下的Vim不知道如何显示双倍字符宽度的字体!你必须告诉它:

set gfn=Monaco:h10:cANSI
set gfw=NSimsun:h12

如上,设置了英文字体使用Monaco,中文字体用NSimsun,至此,才彻底搞定了这个问题。

果真,我生有涯而学无涯啊,希望以后不要再折腾这个了……

博客地址:http://jianshu.io/p/Rww1Tp

最终我的配置如下:

"vim支持打开的文件编码
set fileencodings=utf-8,ucs-bom,shift-jis,latin1,big5,gb18030,gbk,gb2312,cp936  "文件 UTF-8 编码
" 解决显示界面乱码
set fileencoding=utf-8
set encoding=utf-8		"vim 内部编码
set termencoding=utf-8


set guifont=Courier\ New\:h12
set guifontwide=NSimsun\:h12

http://forum.ubuntu.org.cn/viewtopic.php?f=68&t=379398

vim

相关推荐