蓝天,小湖,湖水中一方小筑

让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](http://www.hzmangel.info/blog/wp- content/uploads/2011/11/gvim20111115.zip)