从源码构建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
大功告成~
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 一个人的碎碎念
- 我从来不做坏事
- 从蓦然回首到花开在眼前,都是为了更好的明天。
- 西湖游
- 改变自己,先从自我反思开始
- leetcode|leetcode 92. 反转链表 II
- 从我的第一张健身卡谈传统健身房
- 自媒体形势分析
- 操作系统|[译]从内部了解现代浏览器(1)