美文网首页VimLives Like Vim技术库
Vim中文乱码问题之这次一定要记下来

Vim中文乱码问题之这次一定要记下来

作者: iClaud | 来源:发表于2013-09-29 15:20 被阅读7018次

    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,至此,才彻底搞定了这个问题。

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

    相关文章

      网友评论

      • 775790a75bdf:楼主你好 请问最后一段中的:h10:cANSI 是什么意思
        iClaud:h10是字号大小, cANSI这个和编码相关,好像可以去掉,我也不太确认..
      • cdc4a10b4f38:多谢楼主!这个太有用了!
      • j13hu:博主好会玩呀,哈哈
        文章很赞
      • 2da978532d0e:特意注册回复楼主,好文要顶!
      • iClaud:@陶旭 你可以试试看啊....我手头暂时没有win7的机器了……折腾折腾看
      • 155dd895f8f2:@iClaud 今天突发奇想,vim在英文版的win7显示不出来中文字体,是不是控制面板-》区域和语言-》Language for non-Unicode programs 没有设置成Chinese的缘故
      • iClaud:@陶旭 人在江湖 身不由己……
      • 155dd895f8f2:楼主折腾精神可嘉

      本文标题:Vim中文乱码问题之这次一定要记下来

      本文链接:https://www.haomeiwen.com/subject/vgfqtttx.html