※ [本文转录自 EZsoft 看板 #1GXJ4WK7 ]
作者: Bellkna (Belldandy) 看板: EZsoft
标题: [教学] GVIM(VIM) PORTABLE 编译
时间: Mon Oct 22 19:42:21 2012
前言:
本来想要编译 64bit 的 gvim 来使用
不过遇到一些问题 后来还是用 32bit (为了某些好用的 scrpit)
加上官网的安装档一直没更新 patch 所以就想自己编译的念头
而且编好的程式可以 portable 使用
(有些 script 要 python 支援的 就必需该电脑有装的才能使用)
下面 2 种版本(32bit or 64bit)的编译方法都会讲到
开始前要安装一些软件
首先 安装 Mercurial
官网 : http://mercurial.selenic.com/
下载页面 : http://mercurial.selenic.com/downloads/
按照喜好选择安装档下载即可 这边 32bit or 64bit 不影响编译
Mercurial 2.3.2 MSI installer - x64 Windows - requires admin rights
(我是装这个)
这个是用来下载 vim 的原始码
也可以官网下载原始码再来 patch
不过 windows 下 patch 很麻烦 (而且不一定会过 ; linux 下 patch 是没问题)
用这个比较方便 安装时用默认值安装即可
装好 Mercurial 后 根据 vim 官网上的资料 http://www.vim.org/mercurial.php
在命令列提示字符下 输入下面这行(记得先切换到想下载到的资料夹)
hg clone https://vim.googlecode.com/hg/ vim
之后就等它下载完
原始码下载完毕后
接着安装 TDM-GCC (也可以用 MINGW 只是 MINGW 没有离线安装包 这个比较方便)
官网 : http://tdm-gcc.tdragon.net/ http://sourceforge.net/projects/tdm-gcc/
下载页面 :
http://tdm-gcc.tdragon.net/download
http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/
选一个连结即可 指向的地方是同一个
视要编译的版本(32or64) 下载对应的编译器
32bit : tdm-gcc-4.7.1-2.exe
64bit : tdm64-gcc-4.7.1-3.exe
视要编译的版本安装一个即可
(2 个都装也没问题 只是使用上别用错就好 编译时会 error)
这个安装也是用默认值安装即可
TDM-GCC 装好后
就可以开始编译 vim 了
执行 程式集 里面的 MinGW Command Prompt
(视编译版本选择对应的版本 MinGW32 or MinGW64)
然后 切换到 vim 原始码的目录 src
执行下面其中一行(
mingw32-make.exe -f Make_ming.mak FEATURES=HUGE (32 bit)
mingw32-make.exe -f Make_ming.mak FEATURES=HUGE ARCH=x86-64 (64 bit)
FEATURES 参数可以视需要而调整 我是直接用 HUGE 比较省事
(想研究其它参数的 可以看 Make_ming.mak 的内容研究)
接下来就等它编译好 约5分钟左右(Athlon II X4 630)
编译好后(没跳啥 error 的讯息就没问题)
接下来就是把 编好的执行档 copy 到别的目录上使用
也可以直接使用 src 内的 gvim
不过 还是把需要的东西 copy 到另一个目录上
使用比较方便 也比较不占空间
根据 vim wiki 上的说明
http://vim.wikia.com/wiki/Version_independent_installation_of_Vim_on_Windows
我按照内容 整理出下面所需要的目录结构
vim\vim73\runtime (资料夹)
vim\vim73\gvim.exe
vim\vim73\gvimext.dll
vim\vim73\vimrun.exe
vim\vim73\xxd.exe
runtime 直接从 vim 的目录 复制
gvim.exe 和 vimrun.exe 从 vim\src 复制
xxd.exe 从 vim\src\xxd 复制
gvimext.dll 从 vim\src\GvimEx\ 复制
照这个目录结构 放置档案和资料夹 就是可以 portable 的 gvim
vim 常用的 vimrc 就放在 vim 目录里就可以被读取到
(这边和安装的 gvim 有所不同 档名为 vimrc 安装的话会是 .vimrc)
虽说这样子已经是可以使用的 gvim
不过 使用 diff 时 会有 error 产生
(安装版的会用 mydiff() 此函数来解决)
不过 根据这篇提到
http://vim.wikia.com/wiki/Running_diff
建议的解决方法 还是下载 GnuWin 里面的 diffutils 来使用
官网 :
http://gnuwin32.sourceforge.net/
http://sourceforge.net/projects/gnuwin32/
下载网址 : (选最新版的 bin 下载即可)
http://sourceforge.net/projects/gnuwin32/files/diffutils/
因为 diff.exe 需要下面这2个 dll 才能工作 所以下面这2个也得下载
http://sourceforge.net/projects/gnuwin32/files/libiconv/
http://sourceforge.net/projects/gnuwin32/files/libintl/
这是我下载使用的版本
diffutils-2.8.7-1-bin.zip
libiconv-1.9.2-1-bin.zip
libintl-0.14.4-bin.zip
从里面解压出 以下这3个档案
diff.exe
libiconv2.dll
libintl3.dll
然后和 gvim 放置在同一目录即可
这样 diff 就能正常使用
接下来 稍微提一下 script 安装使用上的问题
自行编译出来的 gvim 使用的目录结构是以 gvim 执行档所在目录为主
以安装这个为例子 pathogen.vim
http://www.vim.org/scripts/script.php?script_id=2332
pathogen.vim 所要放置的目录为
vim\vim73\runtime\autoload
不过 放这边的话 我们要更新 gvim 时
不能直接覆蓋那 4个档案+1个资料夹
所以改放这边
vim\vimfiles\autoload (自行建立)
而 pathogen 默认的读取目录也会在这
vim\vimfiles\bundle
文章到这边 应该可以建立出一个能使用的 gvim 才对
我应该没有漏掉什么才对XD
如果有错误的地方 麻烦指正 谢谢
(其实主要是写一下当笔记 怕自己忘了怎么弄的)
最后提一下 为什么我还是用 32bit 的 gvim
因为这一个 script
http://sjl.bitbucket.org/gundo.vim/
介绍影片 :
http://vimcasts.org/episodes/undo-branching-and-gundo-vim/
当初看了这个 觉得好棒!
因为这个 script 需要 python 才能工作
所以编译时就加入了 python 的支援
可是 编好的 gvim 只要执行 python 相关程式就当机了
结果 不断的尝试+GOOGLE后
发现 64bit 的 python 和 MinGW(TDM-GCC) 有点问题(可能用其它编译器会没问题)
最后 我安装 32bit 的 python 就没问题
Gundo 只支援 python 2.7 想使用 3.3 的话 好像得改程式码
想同时用 2.7 和 3.3 的话得开 dynamic
只是我这样编出来的 gvim 测试 python 还是会当
所以 为了省事 我只用了 python 支援 编译时加入这行
PYTHON=C:\Python27 PYTHON_VER=27 DYNAMIC_PYTHON=no
python3的话用这行 2个不能同时开
PYTHON3=C:\Python33 PYTHON3_VER=33 DYNAMIC_PYTHON3=no
记得要去 python 下载安装档并安装 才能加入 python 的支援
官网 : http://www.python.org/
参考资料补充:
http://vim.wikia.com/wiki/Category:Building_Vim
http://vim.wikia.com/wiki/Build_Python-enabled_Vim_on_Windows_with_MinGW