最后更新于 .

网上从来不缺编程字体推荐的文章,当然vim(gvim)字体的推荐文章也是多不胜数,但是大部分都是想当然的认为哪些字体好用就介绍出来,甚至都没有自己亲自试过,也没有考虑过用户使用19英寸的显示器和14英寸的笔记本时对字体的要求到底有什么不同,鉴于以上几点,我决定写这样一篇文章,真正介绍vim(gvim)中最适合的编程字体。 注:由于vimrc中中文字体的设置需要用到中文,所以请务必保证vimrc的编码是gbk格式,如果不是gbk格式,可以通过1.打开vimrc。2.:set fenc=gbk 3.:w。的操作来解决。

一.17~19(或更大)英寸屏幕    

1)英文字体:    

名字:Bitstream Vera Sans Mono    

大小:10px        

在vimrc中的配置如下:

set guifont=Bitstream_Vera_Sans_Mono:h10:cANSI

优点:        

a)0 O o  1 l ; : 区别非常明显,并且还有一点优势是大家经常会忘记的;:和中文的字体;:区别也很明显,十分适合编程        

b)字体圆滑,支持cleartype,加上配色非常舒服,不会有锯齿感    

缺点:        

说真的,没有。    

截图:

Bitstream Vera Sans Mono    

下载:     Bitstream Vera Sans Mono    

2)中文字体    

名字:幼圆    

大小:10.5(呵呵,真的是10.5,而不是10或者11,只能通过配置文件来实现)    

在vimrc中的配置如下:

set gfw=幼圆:h10.5:cGB2312

优点:        

a)词库全        

b)字体光滑,且支持cleartype        

c)字体偏移与Bitstream Vera Sans Mono持平    

截图:

幼圆(10.5px)

下载:     幼圆(由于字体过大,所以使用外链,并不能保证可用,如果链接失效,大家百度或者google一下就行)

 

二.12(或更小)~14英寸屏幕    

1)英文字体:    

名字:Arial monospaced for SAP    

大小:9px        

在vimrc中的配置如下:

set guifont=Arial_monospaced_for_SAP:h9:cANSI

优点:        

a)0 O o  1 l ; : 也是区别非常明显        

b)字体小且圆滑,支持cleartype,最重要的是它的比划只有一个像素,所以在小屏幕上看起来非常精致。而在12~14英寸屏幕上不使用Bitstream Vera Sans Mono的主要原因就在于,Bitstream Vera Sans Mono的比划太粗,在那么小的屏幕上显得很是臃肿。    

缺点:        

a)有个很大的问题就是,Arial monospaced for SAP这个字体中的*很靠上,而且()等符号和字母并没有持平,所以看起来很是别扭,所以笔者自己更改了一下,下面会放出下载(原版和修改版都有)            

截图:

笔者优化版:

Arial monospaced for SAP(优化版)

下载:     Arial monospaced for SAP(优化版)     Arial monospaced for SAP(原版)    

2)中文字体    

名字:幼圆    

大小:10    

在vimrc中的配置如下:

set gfw=幼圆:h10:cGB2312

优点:        

a)词库全        

b)字体光滑,且支持cleartype        

c)也只有这个字体能够在12~14英寸屏上依旧显的很精致,和Arial monospaced for SAP相互映衬,感觉非常好    

截图:

幼圆(10px)

下载:     幼圆(由于字体过大,所以使用外链,并不能保证可用,如果链接失效,大家百度或者google一下就行)

好啦,到此为止,我所一直使用的字体就介绍到这里了。下面说一下网上盛传的几款字体,根据我在vim(gvim)的真实使用,我谈如下几点体会:

1)关于YaHeiMono     这个字体,组合了微软雅黑, 微软consolas,听起来确实很不错,但是真正用到vim(gvim)中,你会发现,consolas被压缩了,至于原因,是这样的:     我试过将原版的consolas和原版的微软雅黑分别配置到vim(gvim)的英文字体和中文字体中(当然,用的是gvim的重编译版,支持所有字体),但出现的效果就是,微软雅黑明显要比英文consolas偏下一点,整个字体非常难看。如果大家不信,可以尝试一下,呵呵

2)关于中文字体,如果大家又想要微软雅黑的效果,又不想出现我在第一条里出现的问题,又不想重新编译gvim,那么可以试一下方正准圆简体,这款字体的光滑程度和微软不相上下,而且vim(gvim)默认支持哦,但唯一有缺憾的就是这款字体有时候会有点毛边,不过在9号字的时候,没有大碍,10号的话就有点问题了…… OK啦,这篇文章就写到这里,再说一遍哦,我推荐的字体只是测试过Vim(gvim),在别的编辑器上可能效果并不是很好(因为我只用gvim/vim)…… 大家有更好的字体建议,欢迎给我留言啊~~

版权所有,转载请注明出处。https://www.vimer.cn

Pingbacks

  1. vim again | 贺叶霜的树 on #

    [...] 可以看看这个,这个,然后为了兼容性我选了最土的那个…… 苹果的字体好漂亮……好想要…… [...]

Pingbacks已打开。

Trackbacks

引用地址

评论

  1. isunbo

    isunbo on #

    你好,我安装了你介绍的字体,英文显示效果很好但是幼圆字体配置不了,提示"无效的guifontwide".百度和Google也没得到结果.请问要怎么办呢?
    麻烦了,我刚接触gVim.
    我现在把gfw改成Fixedsys了:)

    Reply

    1. Dante

      Dante on #

      是这样的,估计你的vimrc文件不是gbk编码吧,vim的脚本编码识别只能支持gbk。
      按照如下操作试一下:
      1.打开vimrc
      2.:set fenc=gbk
      3.:w
      然后把guifontwide改成幼圆字体就可以啦~

      Reply

      1. isunbo

        isunbo on #

        谢谢!问题解决了.
        原来是
        fenc=gbk,ucs-bom,utf-8,chinese,latin-1
        现在改成了
        fenc=ucs-bom,utf-8,gbk,latin-1
        也不知道文字编码的顺序放的对不对.
        网站的文章我会都看一遍的.

        Reply

        1. Dante

          Dante on #

          呵呵,解决了就好呀。
          其实那句这样改也不太对哦,
          看一下这篇文章吧,实际上就是VIM检测编码的一个问题~
          http://www.vimer.cn/2009/10/87.html
          希望对你有帮助

          Reply

      2. saner69

        saner69 on #

        vim的脚本也能识别其他编码
        脚本最后一行加
        vim:fenc=XXXX

        Reply

      3. MadPer

        MadPer on #

        只能是gbk的吗?我好像一直用的是utf-8的编码...

        Reply

        1. Dante

          Dante on #

          呃,我之前用utf-8就会设置不了中文字体……,可能和机器的环境变量有关吧……

          Reply

  2. isunbo

    isunbo on #

    已经在看了,改过来了,也知道那几个内置变量是什么意思了..

    Reply

  3. iThink

    iThink on #

    推荐一款英文字体: Envy Code R

    截图及下载: http://damieng.com/blog/2008/05/26/envy-code-r-preview-7-coding-font-released

    在vimrc中的配置如下:
    set guifont=Envy_Code_R_VS:h10:cANSI

    Reply

    1. Dante

      Dante on #

      呵呵,去看了下,的确很不错的一款字体,对编码中容易混淆的字体也做了区分,在10px时候看起来很不错~~

      Reply

    2. simba

      simba on #

      有个报错:'guifontwide' invalid,这个是怎么回事呀

      Reply

      1. Dante

        Dante on #

        有两种可能:
        1.vimrc中没有设置set enc=utf-8
        2.你的vimrc文件不是cp936编码的,vim认不出来

        Reply

        1. justzx

          justzx on #

          问题解决没啊?我也有这个错误

          Reply

  4. 漫步

    漫步 on #

    我喜欢用 YaHei.Consolas.1.12 这款字体, 哈哈...

    Reply

    1. Dante

      Dante on #

      这款字体的中文确实看起来非常舒服,我这几天又在家里改字体……主要是觉得12~14屏的字体还有优化的空间~~

      Reply

    2. biglynx

      biglynx on #

      我也想用,可是怎么用捏

      Reply

  5. 铁牛仔

    铁牛仔 on #

    我喜欢用Monaco字体,vimrc的设置如下:
    set guifont=Monaco:h12:w6.5
    不过就是中文显示的效果一般般。不知道是不是因为这个字体本身是不支持中文的缘故。

    Reply

    1. Dante

      Dante on #

      呃,是的,因为这些西方字体是不会涉及到双字节编码的,所以,只有英文字符被设计,而对中文字,系统会自动用默认的宋体。
      我这几天正在研究把雅黑调整一下,能够让gvim中的中文用雅黑显示,已经改的差不多,近期就打算发出来~~效果还不错,嘿嘿

      Reply

  6. 易名

    易名 on #

      我用的修改后的yaheimono,不过字体调到了12号,大屏幕使用的话,我觉得还比较好。
    [img]http://6rbu7w.bay.livefilestore.com/y1phfcTEinsdE5Fv3JdkRvSxO0MmU-5ng_wvAtF_rbMEHQieqPgmDGAmjOSvpB5kzb0Ro7AExF0glnCuEkRhzjkMZOT-d7vaVUj/%E5%89%AA%E8%B4%B4%E6%9D%BF01.png[/img]

    Reply

    1. Dante

      Dante on #

      呀,看了下,字体的效果确实不错哦,
      我记得当时在10px的情况下,英文字体会变得有锯齿,而只用他的中文的话,在Vim中,英文字体和中文字体高度的偏移不一样,所以就没有再用它~

      Reply

  7. hsiao

    hsiao on #

    很好,不错! 使用幼圆看中文字体!

    Reply

    1. Dante

      Dante on #

      嘿嘿,的确不错滴~~~

      Reply

  8. rand

    rand on #

    linux下应该为
    set guifont=Arial\ monospaced\ for\ SAP\ 10
    set gfw=YouYuan\ 10

    Reply

    1. Dante

      Dante on #

      哦,这样啊,感谢指正。
      因为我在linux下用的话,一般都是ssh到服务器上去的,所以vimrc中的字体配置本身起不了作用……

      Reply

    2. MadPer

      MadPer on #

      set gfw=open
      ...

      Reply

      1. Dante

        Dante on #

        哇,难道可以设置远程终端的中文字体吗?怎么设置呀?激动啊

        Reply

        1. MadPer

          MadPer on #

          不成...这个,语句是我瞎写的...就是,防火长城设为开启....表激动....

          Reply

  9. pisces

    pisces on #

    我用的是Lucida Console + 华文黑体
    截图见下
    http://twitpic.com/1eim14

    Reply

    1. Dante

      Dante on #

      杯具,可能我家里网络有问题,你的那个网址怎么都打不开……,我下了那个华文黑体,在windows下的gvim用不了呢,你是在linux下用的?

      Reply

  10. fos

    fos on #

    我改幼圆后,文本里的空格都变成一个个正方框了,怎么回事?是我有什么设置错了吗?盼复。

    Reply

    1. fos

      fos on #

      多试了几个文本,有些会变,有些不会,奇怪了?!什么问题呢?改过编码了,也不行。
      原来用NSimSun就没有出现过。

      Reply

      1. Dante

        Dante on #

        因为其实对于空格来说是分两种的,你说的那种是双字节编码的空格,在幼圆中是显示为方块的,其实我倒觉得这样比较好,在copy别人的代码的时候,可以一眼发现空格的问题。

        Reply

        1. fos

          fos on #

          谢谢!

          Reply

  11. saner69

    saner69 on #

    在vim中使用幼圆体,我也非常喜欢,但在使用中不知为何,会将全角空格显示成方框,一直没找到解决的办法,是不是字库中缺少全角空格,有没有工具可以编辑字体文件,自由添加内容的?

    Reply

    1. Dante

      Dante on #

      是有工具的,不过全角空格显示为方框,我倒真的觉得对编程来说是个优点……

      可以试一下fontcreator

      Reply

      1. saner69

        saner69 on #

        我还用 Vim 做笔记日记等日常的文本处理,不只是写程式,所以有此烦恼,您说的 fontcreator 我下了一个
        但不知如何改幼圆体中的全角空格,另外在 VIM 的使用中还一个事情一直困扰着我,那就是中文的打印老
        是乱码,网上也没查到好的解决途径,不知您是否有良方,谢谢您的博客。

        Reply

        1. Dante

          Dante on #

          中文的打印老是乱码

          是什么意思呢?打印到纸上吗?我从来没有用过vim这个功能呢

          Reply

          1. saner69

            saner69 on #

            就是打印到纸上,看来是我太执着了,想用一个工具解决所有问题,VIM 打印时能指定行号与行范围的功能真的很不错,只是……

            Reply

            1. Dante

              Dante on #

              哇哇,长见识啦~~~我从来没试过呢~~~

              呃,是不是文件的编码格式有问题呢?设置成cp936试一下?

              还有就是,介不介意把你的打印方法写出来,发到本博和大家分享一下呢?很期待呢

              Reply

              1. saner69

                saner69 on #

                打印方法是很简单的:
                :hardcopy 打印全文
                :hardcopy! 不出打印面板,用默认打印机打印全文
                :23hardcopy 打印第23行
                :2,23hardcopy 打印2~23行

                另我重装了一下VIM,有毛病了,我的编码设置如下:
                set enc=utf-8
                set fenc=utf-8
                原先这样设置菜单是乱码的,需要重设菜单
                现在好了,真是奇了,另打印也好了
                与原先不同的是我下了官网的 iconv.dll 放在了vim\vim72 下了,是个编码转换库,不知是不是这个原因,有兴趣试试

                Reply

                1. saner69

                  saner69 on #

                  但有个问题,原先>> 能输入一个与》差不多的半角字符,现在不行了,utf-8格式的文件如有一些gbk不支持的字符所有中文都显示乱码,不知如何解决。

                  Reply

                  1. Dante

                    Dante on #

                    呃,这个字符集的大小问题吧,你下载的幼圆字体文件多大呀?是不是少了很多字符呢……

                    Reply

  12. simba

    simba on #

    Bitstream Vera Sans Mono大小设置成10的时候,小写的T太高了,明显不协调。大小设置成11反而更好些

    Reply

    1. Dante

      Dante on #

      会吗,我在公司电脑上都是设置成10的哦,感觉挺正常的……

      Reply

      1. simba

        simba on #

        会的。我用的是win7u版,不知道跟这有没有关系

        Reply

      2. simba

        simba on #

        你邮件地址是多少?我把截图发给你看看

        Reply

        1. Dante

          Dante on #

          呃,我是XP呢……dantezhu@vip.qq.com,发到这里吧~~

          Reply

      3. simba

        simba on #

        不用了。谢谢。用了博主的雅黑forgvim后,设置set gfw=Yahei_Mono:h10:cGB2312就不再出现这个问题了。谢谢。

        Reply

        1. Dante

          Dante on #

          哈哈,好事好事~~~ happy viming~~

          Reply

  13. poornigga

    poornigga on #

    我想把英文字体设置成cautll, 中文字体设置成微软雅黑, 不知道能不能?如何设置,

    Reply

    1. poornigga

      poornigga on #

      Catull设置了之后显示不出来效果,

      Reply

      1. Dante

        Dante on #

        呃,这个英文字体我没有试过,vim也不是所有字体都支持的~至于怎么设置,可以在我的博客搜索字体或者微软雅黑~

        Reply

  14. MadPer

    MadPer on #

    Bitstream Vera Sans Mono后来出了个改进版本,叫dejaVa Sans Mono吧,也不错的说~~

    Reply

    1. Dante

      Dante on #

      嗯啊,那个字体我用了一下,怎么也没有找出差别,所以就被删掉了……

      Reply

      1. MadPer

        MadPer on #

        dejaVa Sans Mono添加了对utf-8中其他字符的支持,好像是...

        Reply

  15. 小骆驼商队

    小骆驼商队 on #

    我也喜欢幼圆体……

    Reply

  16. zwwooooo

    zwwooooo on #

    这配合很赞

    Reply

  17. 江湖客

    江湖客 on #

    YaheiMono17*17屏幕不花。

    Reply

    1. Dante

      Dante on #

      呃,介个。。。不懂。。是说17的字体大小时,显示不清楚?

      Reply

  18. cyanue

    cyanue on #

    solaris下可以安装Bitstream Vera Sans Mono这个字体吗?

    Reply

    1. Dante

      Dante on #

      应该也是可以的,不过没有装过,上面介绍的都是在windows下安装的,linux的话可以试一下Inconsolata,据说是最漂亮的编程字体,在windows下用有点花,不过在linux下据说很完美。

      Reply

  19. Ace

    Ace on #

    Linux下设置了好想不起作用阿 字体还是原来的

    Reply

  20. lvyiwang

    lvyiwang on #

    我比较喜欢Monospace和幼圆的组合,不过遇到问题了,一个上午也没有解决。(果然,高效的工具想驾驭也不容易啊,不过现在慢慢的体会到它的高效了。)
    我的问题是:
    ~/.vimrc设置成(节选自己认为的相关部分)
    set enc=utf-8
    set fencs=gbk,gb2312
    set gfw=幼圆
    set guifont=Monospace
    1,于是英文显示M的,中文显示幼圆的,不过幼圆的距离好像太大了。
    2,于是我试着改变gfw和guifont后面的参数,不过gwf后面无论加什么,幼圆就不能正常显示了。如果在guifont后面增加参数,那么英文和中文字体的间距就都变大了,无论如何都很难看啊。请问如何设置才能让幼圆和M显示正常,间距要很小的那种,就和你上面贴的一样。
    3,我之前用sudo apt-get install vim-gnome的gvim时,在insert状态下backspace是有效的,不过自从用vim7.3的源码安装后,backspace这个键就没用了,打字很不方便,每回要切换模式。
    还有,我非常喜欢你的博客^_^,尤其是和vim相关的部分,现在在学校努力学习编程和linux,以后也要用技术去帮助他人。最后,谢谢你和你的博客。

    Reply

    1. Dante

      Dante on #

      哈哈,不客气,欢迎交流~~

      幼圆的距离变大是因为等宽字体要求中文字的宽度是英文字的两倍,你设置的幼圆字体比较小,所以看起来就间距变大了。。可以把幼圆字体调大一些,不过那样估计就不美观了。。

      对于退格键,你可以试一下这个设置:

      <pre lang="vim" line="1">
      set backspace=indent,eol,start whichwrap+=<,>,[,]
      </pre>

      Reply

      1. lvyiwang

        lvyiwang on #

        好像基本明白了,谢谢!

        Reply

  21. 伴随着你

    伴随着你 on #

    前些天在winxp下用Gvim,想用新宋体怎么都不行,后来发现是_vimrc的文件类型的问题,简单的办法是用记事本另存为的时候文件编码改成ANSI就欧科了。xp里面新宋体显示还是很紧凑的。
    p.s. 我一直用ubuntu,vim字体是雅黑宋体。感觉不错~

    Reply

    1. Dante

      Dante on #

      我之前都是把vimrc存为cp936才能正常使用中文,后来其实也有个简单的方法,比如宋体就叫songti,可以试一下~~

      Reply

      1. alan

        alan on #

        vimrc使用中文字体名无效的问题也困扰我一段时间了,原来是vimrc的编码问题;
        多谢楼上两位指点;

        现在用的是方正准圆+droid sans mono。

        Reply

  22. 流云

    流云 on #

    请问:linux里vim 的字体应该放到哪个目录下?

    Reply

    1. 依云

      依云 on #

      ~/.fonts

      Reply

  23. 云

    on #

    你好,请问一下,按照你的方法设置字体,就是字母和汉字设置不同字体。

    可我这里不行
    set fencs=gbk
    set gfw=幼圆:h12:cGB2312
    "set gfw=幼圆:h10:cANSI
    set guifont=Arial_monospaced_for_SAP:h9:cANSI

    打开字体菜单后,当前选择的是幼圆,但要点一下确定,才会变成幼圆,请指导一下,谢谢

    Reply

    1. Dante

      Dante on #

      呃,这个问题我还真没遇到过。。。是在windows下吗?

      Reply

      1. 云

        on #

        是的,在windows下啊

        Reply

        1. 华年锦时

          华年锦时 on #

          我也是同样的问题,百思不得其解

          Reply

  24. nbsp

    nbsp on #

    你好站长,我用vim没多长时间,有几个问题想像您请教下。
    1:关于插件怎么安装?除了在配置文件设置外;是直接复制到安装目录下的某些目录还是怎么?
    2:那个字体文件直接复制到系统的字体目录下还是gvim下。

    Reply

    1. Dante

      Dante on #

      1.放到对应的目录就可以
      2.是要装到系统中。。

      Reply

  25. nbsp

    nbsp on #

    感谢dante百忙之中的回复,我以后会一直来的,

    Reply

  26. isprin

    isprin on #

    中文字体是方正幼圆还是微软幼圆

    Reply

  27. carry

    carry on #

    按文章1条说得,配得效果出乎意料的好!字体大小都为12,十分感谢博主

    Reply

  28. leyafo

    leyafo on #

    谢谢楼主,你给的字体很好用.

    Reply

  29. liu

    liu on #

    你好~我是win7系统,安装了gvim后在_vimrc中没有:set fenc
    set nocompatible
    source $VIMRUNTIME/vimrc_example.vim
    source $VIMRUNTIME/mswin.vim
    behave mswin

    set diffexpr=MyDiff()
    function MyDiff()
    let opt = '-a --binary '
    if &amp;diffopt =~ 'icase' | let opt = opt . '-i ' | endif
    if &amp;diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
    let arg1 = v:fname_in
    if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
    let arg2 = v:fname_new
    if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
    let arg3 = v:fname_out
    if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
    let eq = ''
    if $VIMRUNTIME =~ ' '
    if &amp;sh =~ '\ ' . arg3 . eq
    endfunction
    您看应该怎么弄?谢谢

    Reply

  30. 异类深呼吸

    异类深呼吸 on #

    依云你的邮箱地址能发我下么,我看了你的文章有些地方照做了检查也没什么问题了,但是出不来你的效果,所以想请教下,VIM新人

    Reply

  31. aptx4869

    aptx4869 on #

    关于Arial monospaced for SAP两个版本,有个问题必须报告一下
    博主说过“这个字体中的*很靠上,而且()等符号和字母并没有持平,所以看起来很是别扭,所以笔者自己更改了一下”

    我在linux下没有用gvim,而是直接在terminal 里面用这字体。一开始用的是修改过的版本,结果会出现[ ] { }等符号过于靠上以至于上段修饰被吃掉的情况,我还以为是fonts.config什么的问题折腾了好久也没弄好……今天突然想起还有两个版本这茬,心想会不会是博主链接放反了,于是下来试了一下,结果被吃掉的部分又出来了……

    不过这原版符号的对齐确实也有问题,和博主说的一样*很靠上什么的,[]{}没对齐什么的,结果最后忍无可忍,祭出必杀FontForge什么的……

    总结就是博主的修改跟我的系统不兼容,在term里面脑袋被吃掉了,所以根据自己的情况修改字体吧 XD

    Reply

  32. findingsea

    findingsea on #

    博主,我在vimrc下配置如下:
    set guifont=Consolas:h12:cANSI
    set guifontwide=YouYuan:h12:cGB2312
    set gfw=YouYuan:h12:cGB2312
    环境是windows xp
    版本是7.3
    但是没有效果,英文字体是consolas,但是中文字体不是幼圆。
    包括
    set guifontwide=幼圆:h12:cGB2312
    set gfw=幼圆:h12:cGB2312
    我也试过了,还是一样。
    博主知道这是为什么吗?

    Reply

    1. Dante

      Dante on #

      guifontwide = gfw,写一个就行,不过不生效的确很怪,你 :set guifont=*,手动选择一下,然后 :set guifont,看一下值是什么

      Reply

      1. findingsea

        findingsea on #

        set guifont是有效的,但是set guifontwide不行,就算在vimrc里面写了,命令模式下:set guifontwide还是为空的

        Reply

        1. Joe Ge

          Joe Ge on #

          很棒,终于解决我的问题不。谢谢。

          Reply

  33. sailor

    sailor on #

    下载不了。。

    Reply

发表评论