让win下的vim支持非等宽字体

最近vim升级到了7.3,很喜欢它的相对行号功能(:h rnu),于是就升级了,然后就毫无悬念的出问题了~

问题的原因是之前用的vim72是个改版,加上了对非等宽字体的支持,于是在vim中可以将guifontwide设置为YaHei Consolas的混合字体,不过这次升级后没找到原作者的网站,只好自己动手了。

改动在os_mswin.c中,进去后直接找mono,会看到一处注释说忽略非等宽字体,把下面那行注释掉就好,这是diff文件:

diff -r 96b2b1cca7cd src/os_mswin.c
--- a/src/os_mswin.c    Mon Aug 23 12:55:47 2010 +0800
+++ b/src/os_mswin.c    Mon Aug 23 13:05:17 2010 +0800
@@ -3288,8 +3288,11 @@

 #ifndef FEAT_PROPORTIONAL_FONTS
     /* Ignore non-monospace fonts without further ado */
+    /*
+     * hzmangel: I need non-monospace fonts!
     if ((ntm->tmPitchAndFamily & 1) != 0)
        return 1;
+    */
 #endif

     /* Remember this LOGFONT as a "possible" */

然后直接在vs2010编译环境中用bigvim.bat来编译vim即可,如有需要可以对其中的参数进行修改。写完,收工~

Update at 2010-09-18

在xbeta的帮助下试着编译了一个可以支持取词的版本,用的是这篇文章的方法 http://xbeta.info/gvim-powerword-ciba.htm 感谢Dieken@newsmth,手边没有金山,用有道测试了一下支持取词。目前的版本相比于官方有如下改动:支持非等宽字体,支持取词,但是去掉了Perl/Lua/Ruby/Tcl的支持(因为编译的机器上没装这些软件)。支持取词改动的diff文件如下

diff -r 6768ebd0bc04 -r 213b33df021a src/gui_w32.c
--- a/src/gui_w32.c     Sun Aug 08 16:38:42 2010 +0200
+++ b/src/gui_w32.c     Sat Sep 18 10:37:41 2010 +0800
@@ -2298,7 +2298,11 @@
     /* On NT, tell the font renderer not to "help" us with Hebrew and Arabic
      * text.  This doesn't work in 9x, so we have to deal with it manually on
      * those systems. */
-    if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT)
+    if (
+#ifdef FEAT_RIGHTLEFT
+            curwin->w_p_rl &&
+#endif
+    os_version.dwPlatformId == VER_PLATFORM_WIN32_NT)
        foptions |= ETO_IGNORELANGUAGE;

     /*

最后是编译好的gvim,安装官方的包后直接丢到安装目录下替换原文件即可,Enjoy~~

gvim20111115

This entry was posted in 善用佳软 and tagged , . Bookmark the permalink.

13 Responses to 让win下的vim支持非等宽字体

  1. Pingback: 让win下的vim支持非等宽字体 « 相对用户体验

  2. 善用佳软 says:

    刚好有网友在推动更适合中文用户的Vim改进版,我认为相对可行的两个改进就是:支持金山词霸取词,支持非等款字体。
    能否请你编译一个这样的gvim.exe,与大家共享?

    请通过邮件联系。

    相关文章:
    《拿起画笔,描绘你心中的Vim》补充说明 http://xbeta.info/zhvim.htm
    拿起画笔,描绘你心中的Vim(来自Ame的倡议) http://xbeta.info/zhvim-2.htm
    修改版GVIM:支持金山词霸屏幕取词 http://xbeta.info/gvim-powerword-ciba.htm

  3. Pingback: 支持非等宽字体、屏幕取词的gvim v7.3 | 善用佳软

  4. Pingback: 支持非等宽字体、屏幕取词的gvim v7.3 | liansi.org

  5. 非常好的改进,如果能加进官方版本就好了!

  6. Pingback: 支持非等宽字体、屏幕取词的gvim v7.3 | My Google Reader Share

  7. Pingback: 支持非等宽字体、屏幕取词的gvim v7.3 | 网摘

  8. wp xu says:

    谢谢分享!

  9. 血族使天 says:

    你好,我看了你的这篇文章,但是我对于怎样用VS2010来编译gVim还是不太懂,请问你能指点一下吗?

    • hzmangel says:

      不好意思,这几天没去后台看评论。从hg中直接checkout出来的源码中有一个.bat文件,那个就能用来编译,但是在编译前可能需要改一下里面一些解释器的路径。vs2010安装完成后有一个命令行的窗口, 它会在cmd的环境中载入VS的一些环境变量,在那个窗口中切换到vim的目录,直接运行那个.bat文件就行了。不知道这样清楚了不~

  10. 小达 says:

    有点麻烦的问题
    编译的时候 提示 无法打开包括文件 extern.h
    我网上搜了一个
    然后又提示 无法打开包括文件perl.h

    • hzmangel says:

      你是想加入perl支持吗?我没有碰到过这个问题,感觉可能是perl路径设置不对。

  11. Pingback: gvim及常用插件的安装和设置 » ReadMoon

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>