从源码构建 Vim
引言
事件是介样滴,因为我是个 Vim 重度使用者了差不多。。
但在大部分零碎上能装置到的或者自带的都是比拟老的版本,可能是 7.x 之类的。也或者是你须要应用到 Vim 的某些个性或者性能,但他人帮你 Build 好的程序并没有启用,这就很难堪了。
所以,咱们要从源代码自已构建自已的 Vim.
步骤
下载运行时及源码
首先是要装置编译必要的库,这里你们看状况,有报错缺啥就补也成。
可能须要这些(我自已不必装就能够了):
sudo apt install ncurses-dev
# or
sudo apt install libncurses-dev
# or
sudo 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
功败垂成~