(中文) 在Visual Studio编译gvim和ycmd

Sorry, this entry is only available in 中文.

本文链接:(中文) 在Visual Studio编译gvim和ycmd

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:Rexdf,谢谢!^^


This entry was posted in 编程日志 and tagged , . Bookmark the permalink.

9 Responses to (中文) 在Visual Studio编译gvim和ycmd

  1. 斜边五 says:
    Firefox 39.0 Windows 8.1 x64 Edition
    Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0

    照着编译了64位的llvm/clang跑完用时50分钟,第一次感觉机器配置好差劲,然后ycmd也成功了,但是因为之前用的32位,结果同时存在两个2.7版本的python,想用回32位的只删掉path变量中64位版本路径还不够,必须卸载才能用。

    其他依赖软件像编译2.0.0旧版的ruby遇到各种问题,执行configure.bat后还得手动修改生成的文件,要不会出现dll文件名不一致的问题,一般分享的gvim版本信息中看到的是msvcrt-ruby200.dll, 自己的却是msvcr120-ruby200.dll。依你编译的过程看,感觉一切都很顺利,bat脚本用的也很好,学到了很多自动编译的方法。

    有个疑问请教下,为什么python可以同时兼容mingw和vs版本的gvim,而ruby却好像不行?

    现在连github网速很慢,ycmd子模块又多,等下载完要等很久,可以加参数depth=1进行浅克隆能快些。
    http://stackoverflow.com/questions/2144406/git-shallow-submodules

    • rexdf says:
      Internet Explorer 11.0 Windows 10 x64 Edition
      Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

      Python32 与 Python 64的问题有几个比较成熟的解决办法。①像我日常用的pythonxy,是32位的2.7版本。如果你是说python的文件关联问题,手动关联py与pyw文件这个应该非常容易解决。如果是说py.exe的默认启动,这个网上搜一下,有改注册表的解决办法。而我实际上是c:\python27是pythonxy,而C:\python27-x64是x64版本。②编译过程可以不安装一切依赖的,有绿色的解决办法,实际上我在写本篇博客的时候,就没有安装64位的python27(因为pdb调试的原因).③ycmd.dll和gvim.exe需要的实际上只是python27.dll这个文件,一定的配置可以直接打包一个绿色的gvim与ycmd。

      ruby我没遇到什么问题,直接点击一个bat,一切都好了。当然后来我的bat已经修改了,是如下的一句,

      call win32\configure.bat --prefix="E:\vim_tools\ruby222-x64" --target=x64-mswin64 --with-zlib-dir=E:/vim_tools/zlib128-dll --with-tcl-dir=E:/vim_tools/tcl86-x64 --with-openssl-dir=E:/vim_tools/openssl

      也就是说我们需要zlib tcl 和openssl,这个需要自己编译。

      你观察python的C:\Python27_x64\libs下面,会发现有libpython27.a,这个是给mingw用的,而python27.lib是给msvc用的。mingw中有reimp可以转换lib为.a文件,但是对于c++应该是无能为力的。因为即使是msvc自己不同版本的c++库都是不兼容的。

      最后说一点实际上如果你不打算用ruby写gvim的插件,压根不需要编译它。只需要在编译vim的时候设置DYNAMIC_RUBY=no就可以编译vim了。

      关于GitHub网速的问题,自然是科学上网了,这个是必备的嘛。

      • 斜边五 says:
        Firefox 39.0 Windows 8.1 x64 Edition
        Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0

        谢谢解答,编译之类的问题照着你说的基本就会少踩坑了。
        不打补丁编译的gvim在win8上最大化时有很宽的白色边框,非最大化时好像又正常了,用k-vim的配置也一样,网上查到的也就这个临时的解决办法,但效果不是很好,边框和工具栏都一个颜色很难看 https://github.com/xqin/gvimfullscreen
        相关的链接
        1 https://github.com/asins/gvimfullscreen_win32/commit/bdfc28638ff49b341e0ab8c911a5e13115ef8222 im启动的时候自动使用当前颜色的背景色以去除Vim的白色边框;
        2 https://www.reddit.com/r/vim/comments/2szxgt/border_problem_with_gvim/ Border problem with gVim

        • rexdf says:
          Internet Explorer 11.0 Windows 10 x64 Edition
          Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

          我没发现白边问题,如果是说一行不能占满,右边有很多空白区域,那是要设置columns就可以改变行的最大宽度,另外注意字体一定要设置成等宽,否则非常恶心。

          我的_gvimrc有如下的开关,这个是根据实际显示情况1920*1080 125%改出来的,不一定适合你。

          function! Maximized()
              if s:IsMax == 0
                  :call libcallnr("vimtweak.dll", "EnableMaximize", 1)
                  echo 'Maximized'
                  let s:IsMax = 1
                  set lines=30
                  set columns=157
              else
                  :call libcallnr("vimtweak.dll", "EnableMaximize", 0)
                  echo 'Normal'
                  let s:IsMax = 0
                  set lines=25
                  set columns=80
              endif
          endfunction
          配置
          点击查看大图
          效果
          点击查看大图
          • 斜边五 says:
            Firefox 39.0 Windows 8.1 x64 Edition
            Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0

            底部边框对比图
            你用的win10好像没问题,win8上暂时解决不了就算了

          • 斜边五 says:
            Firefox 39.0 Windows 8.1 x64 Edition
            Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0

            看回帖提醒邮件中的格式还以为支持img标签,附图 http://i3.tietuku.com/b7a57e5b0c62e8d1.png

          • rexdf says:
            Internet Explorer 11.0 Windows 10 x64 Edition
            Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

            原来说的这个,你不指出来我还真没注意到,你前一个回复里面就说的这个问题。win10不论是否最小化左右两边似乎都一样的很细,最下面倒是确实有个白条,非最大化的时候几乎有一行字那么宽,最大化之后高度大约四分之一行。下午来看看。之前写的时候用的win8.1没有注意到这个问题,倒是注意到gvim的tab不能像sublime一样拖来拖去。

          • 斜边五 says:
            Firefox 39.0 Windows 8.1 x64 Edition
            Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0

            当只有一个标签页时底部白边的情况却是相反的,标签页移动可以用命令 `tabmove Num`

          • rexdf says:
            Internet Explorer 11.0 Windows 10 x64 Edition
            Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

            我比较在意vim不支持的鼠标操作,比如completion list不支持鼠标,tab不支持鼠标移动。就是说需要patch的是vim的源码才能支持。目前流行的sublime以及atom系列的编辑器都是可以支持鼠标操作的,而我发现tab似乎无法移动,然后发现有patch(当然还是不太优雅)。
            tabmove写了几句绑定了快捷键的,毕竟vim.wikia满是这种tips。实际情况是我只在Linux命令行下面会用vim,编译gvim.exe纯属于为了编译而编译,偶尔会用它修改下配置文件而已。

Leave a Reply to rexdf Cancel reply

Your email address will not be published.

*

:zsmilebig: :zsadbig: :zwiredbig: :zgreenhappy: more »

This site uses Akismet to reduce spam. Learn how your comment data is processed.