从源码构建Vim

从源码构建Vim 引言 事情是介样滴,因为我是个Vim 重度使用者了差不多。。
但在大部分系统上能安装到的或者自带的都是比较老的版本,可能是7.x 之类的。也或者是你需要使用到Vim 的某些特性或者功能,但别人帮你Build 好的程序并没有启用,这就很尴尬了。
所以,我们要从源代码自已构建自已的Vim.
步骤 下载运行时及源码
首先是要安装编译必要的库,这里你们看情况,有报错缺啥就补也成。
【从源码构建Vim】可能需要这些(我自已不用装就可以了):

sudo apt install ncurses-dev# orsudo apt install libncurses-dev# orsudo apt install libncurses5-dev \ libgtk2.0-dev \ libatk1.0-dev \ libcairo2-dev \ python-dev \ python3-dev \ git

然后是下载源码:
cd ~ && git clone https://github.com/vim/vim.git && cd vim/src

配置Vim
因为Vim 支持的功能非常多,所以你可以自已选需要的功能打开或者关闭。可以参看这里
也可以通过这个命令查看你当前的Vim 版本及功能的情况:
$ vim --version | less VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Jan 19 2021 18:24:53) macOS version - x86_64 Included patches: 1-2375 Compiled by Homebrew Huge version without GUI.Features included (+) or not (-): +acl-farsi+mouse_sgr+tag_binary +arabic+file_in_path-mouse_sysmouse-tag_old_static +autocmd+find_in_path+mouse_urxvt-tag_any_white +autochdir+float+mouse_xterm-tcl -autoservername+folding+multi_byte+termguicolors -balloon_eval-footer+multi_lang+terminal +balloon_eval_term +fork()-mzscheme+terminfo -browse+gettext+netbeans_intg+termresponse ++builtin_terms-hangul_input+num64+textobjects +byte_offset+iconv+packages+textprop +channel+insert_expand+path_extra+timers +cindent+ipv6+perl+title -clientserver+job+persistent_undo-toolbar +clipboard+jumplist+popupwin+user_commands +cmdline_compl+keymap+postscript+vartabs +cmdline_hist+lambda+printer+vertsplit +cmdline_info+langmap+profile+virtualedit +comments+libcall-python+visual +conceal+linebreak+python3+visualextra +cryptv+lispindent+quickfix+viminfo +cscope+listcmds+reltime+vreplace +cursorbind+localmap+rightleft+wildignore +cursorshape+lua+ruby+wildmenu +dialog_con+menu+scrollbind+windows +diff+mksession+signs+writebackup +digraphs+modify_fname+smartindent-X11 -dnd+mouse-sound-xfontset -ebcdic-mouseshape+spell-xim +emacs_tags+mouse_dec+startuptime-xpm +eval-mouse_gpm+statusline-xsmp +ex_extra-mouse_jsbterm-sun_workshop-xterm_clipboard +extra_search+mouse_netterm+syntax-xterm_save system vimrc file: "$VIM/vimrc" user vimrc file: "$HOME/.vimrc" 2nd user vimrc file: "~/.vim/vimrc" user exrc file: "$HOME/.exrc" defaults file: "$VIMRUNTIME/defaults.vim" fall-back for $VIM: "/usr/local/share/vim"

上面第一行就写了版本号,而那些所有的特性就列在了下面,带 + 的是启用的了, - 号的是没启用。
如果没错的话现在我们在 vim/src 这个目录里了。
通过这个命令可以基本开启全功能:
./configure \ --with-features=huge \ --enable-multibyte \ --enable-rubyinterp \ --enable-perlinterp \ --enable-luainterp \ --enable-pythoninterp \ --with-python-config-dir=/usr/lib/python2.7/config-arm-linux-gnueabihf/ \ --enable-python3interp \ --with-python3-config-dir=/usr/lib/python3.7/config-3.7m-arm-linux-gnueabihf/ \ --enable-gui=gtk2 \ --enable-cscope \ --prefix=/usr

注意:里面两个Python 路径替换成你机器上的实际情况!
或者,你想关闭某个默认是开启的功能也可以用这样关掉:
./configure --enable-multibyte=no --enable-cscope=yes

直接写xxx=no 会关闭而xxx=yes 会开启,上面这条例子我们关了enable-multibyte, 而开启了enable-cscope.
命令运行后程序会跑很多checking, 耐心等待它跑完就行。
安装
在运行完configure 后,配置就设置好了,接下来就可以直接安装了。
make sudo make install

你想要也可以指定位置:
sudo make VIMRUNTIMEDIR=/usr/local/share/vim/vim82

或者指定最多可运行多少jobs 以防止小机器受不了,因为不限制它会随便开:
make -j 4

在跑完make 和install 命令后,vim 应该就已经安装好了。再次查看一下版本应该就是最新的了。
如果没有变化的话,可能是因为shell 的缓存机制导致的,可以另开一个shell 或者用下面的命令更新一下缓存:
hash vim

大功告成~

    推荐阅读