歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Windows下編譯支持多種腳本語言的64位VIM(GVIM)

Windows下編譯支持多種腳本語言的64位VIM(GVIM)

日期:2017/2/27 15:47:54   编辑:Linux教程

想要玩一下 VimIRC.vim 這款插件,不過這貨竟然是 Perl 寫的,而我用的 vim 沒有加入 Perl 支持,所以想不如試試編譯一個支持多種腳本語言的 vim

  • Vim版本:7.3.905
  • 需要支持的語言Python2/3, Ruby, Perl, Lua, Tcl
  • 編譯環境:Cygwin
  • 操作系統:64 位的 Windows8

一.准備工作

1.Cygwin

除了默認的組件外,還需要選擇以下的包:autobuild,autoconf,automake,binutils,cmake,gcc- core,gcc,gcc-g77,gcc-g++,gcc4-core,gcc4,gcc4-g++,make,makedepend,pkg- config,gcc-mingw-core,gcc-mingw-g++,gdb,最後,因為現在是編譯 64 位版本的 vim 而我又不清楚具體需要哪些包,所以直接搜索 64,選擇安裝所有的搜索結果 XD

2.各種語言的包

我一律選擇了 64 位的版本。Python 分別為 2.7.3 跟 3.3.1。Ruby 本來糾結是用 1.9.3 還是 2.0.0 好,本來電腦裡因為配置 Octopress 已經安裝了 1.9.3 ,可是 RubyInstaller 似乎只有 2.0 有 64 位的版本,又不知道 Octopress 對 2.0 會不會有兼容性問題。最後選擇了下 2.0.0 的 zip 包。Perl 5 的實現選用了 ActivePerl,版本為 5.16.3。Lua 到這裡下載 lua-5.2.1_Win64_bin.zip 和 lua-5.2.1_Win64_dllw4_lib.zip 這兩個文件,解壓到同一目錄下。

update (20130501):增加對 Tcl 的支持,版本為 ActiveTcl 8.5.13。原本打算用 8.6 的,無奈編譯不成功,原因不明。。。

3.VIM 源代碼

在這裡 ftp://ftp.vim.org/pub/vim/pc/ 下載,當然是選 7.3啦,找到 vim73_46rt.zip,vim73_46src.zip 這兩個包,前一個是運行時文件後一個是源代碼,從 7.3 開始語言文件已經打包進了runtime裡。然後再到這裡 ftp://ftp.vim.org/pub/vim/patches/7.3/ 下載補丁。不過這些補丁實在太多了(911 個!),下載起來實在有點麻煩。最開始想到用 Firefox的DownThemAll 擴展,不過不知為什麼下載下來的文件名開頭都多了個 2.3(記不太清,反正就是多了幾個數字,不過現在想想其實也沒什麼影響 ←_←)。然後又想到在資源管理器打開再全選復制,不過速度實在慢的可以。最終 google 後選擇了 wget,查了一下命令:

$ wget -c -r -nd -np www.xxx.org/pub/path/

-c:斷點續傳;-r:遞歸目錄;-nd:遞歸是不創建各層目錄直接下載到當前目錄下;-np:遞歸時不搜索上層目錄。把vim73_46src.zip裡的src 文件夾(其他的可有可無)解壓到一個暫命名為 make 的目錄下,把所有的補丁文件放到與 make 目錄同級的 patches 文件夾裡。打開 Cygwin,c d到 make 目錄下(在 Cygwin 裡的 /cygdrive 路徑下可以找到系統裡的各分區),執行以下命令打補丁:

$ for file in ../patches/7.3.*; do patch -Np0 -i $file; done

二.開始編譯

cd 到 src 文件夾下,執行以下編譯命令:

$ make -f Make_cyg.mak CC=x86_64-w64-mingw32-gcc RC=x86_64-w64-mingw32-windres ARCH=x86-64 PYTHON=/cygdrive/c/Python27 PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON3=/cygdrive/c/Python33 PYTHON3_VER=33 DYNAMIC_PYTHON3=yes RUBY=/cygdrive/c/Ruby200_64 RUBY_VER=200 RUBY_VER_LONG=2.0.0 DYNAMIC_RUBY=yes LUA=/cygdrive/c/Lua52 LUA_VER=52 DYNAMIC_LUA=yes PERL=/cygdrive/c/Perl64 PERL_VER=516 DYNAMIC_PERL=yes TCL=/cygdrive/c/Tcl TCL_VER=85 DYNAMIC_TCL=yes -j5 GUI=yes STATIC_STDCPLUS=yes OLE=yes FEATURES=HUGE USERNAME=wenLiangcan USERDOMAIN=Cygwin

*_VER 跟 *_VER_LONG 的區別是,前者使用不帶“.”的版本號,如 200,而後者則需要,如 2.0.0。查看 Make_cyg.ma k文件可以發現,對 ruby 的支持編譯需要通過版本號定位到 \$(RUBY)/lib/ruby/\$(RUBY_VER_LONG)/… 這樣的路徑下,所以對 ruby 使用的這個參數。

不使用 STATIC_STDCPLUS=yes 的話,gvim 運行時會需要 libstdc++-6.dll 跟 libgcc_s_sjlj-1.dll 這兩個文件。

GUI=yes 就是編譯 gvim,GUI=no 則編譯 vim。

多字長跟 cscope 支持都是默認為 yes。

編譯完成後,復制 src/ 下的 vim.exe,gvim.exe,install.exe,uninstal.exe,vimrun.exe 跟 GvimExt/ 下的 gvimext.dll(用來添加系統右鍵菜單的“Edit with Vim”) 還有 xxd/ 下的 xxd.exe到運行時目錄下(由 vim73_46rt.zip 解壓得到)就可以啦。如果需要安裝,就在 cmd 裡以管理員權限運行 install.exe。

三.查看成果

運行 vim/gvim ,執行命令:

:version

( ̄一 ̄)y

附上下載

四.補充

  • 中文系統下 cygwin 的 shell 也會自動支持中文,如果編譯過程出現錯誤想要復制 google 一下,英文關鍵詞的搜索結果往往會更准確,所以我想把它改為英文提示,可以在 ~/.bashrc 裡末尾加上:
    export LANG='en_US'
    export LC_ALL='en_US.GBK
  • 編譯後可以執行以下命令清理編譯文件:
    $ make -f Make_cyg.mak clean
Copyright © Linux教程網 All Rights Reserved