從源碼構(gòu)建Vim
引言
事情是介樣滴,因為我是個Vim 重度使用者了差不多冤荆。隆檀。
但在大部分系統(tǒng)上能安裝到的或者自帶的都是比較老的版本震捣,可能是7.x 之類的。也或者是你需要使用到Vim 的某些特性或者功能,但別人幫你Build 好的程序并沒有啟用船庇,這就很尷尬了。
所以侣监,我們要從源代碼自已構(gòu)建自已的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 支持的功能非常多窃爷,所以你可以自已選需要的功能打開或者關(guān)閉。可以參看這里
也可以通過這個命令查看你當前的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"
上面第一行就寫了版本號按厘,而那些所有的特性就列在了下面医吊,帶 + 的是啟用的了, - 號的是沒啟用逮京。
如果沒錯的話現(xiàn)在我們在 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 路徑替換成你機器上的實際情況!
或者造虏,你想關(guān)閉某個默認是開啟的功能也可以用這樣關(guān)掉:
./configure --enable-multibyte=no --enable-cscope=yes
直接寫xxx=no 會關(guān)閉而xxx=yes 會開啟御吞,上面這條例子我們關(guān)了enable-multibyte, 而開啟了enable-cscope.
命令運行后程序會跑很多checking, 耐心等待它跑完就行。
安裝
在運行完configure 后漓藕,配置就設(shè)置好了陶珠,接下來就可以直接安裝了。
make
sudo make install
你想要也可以指定位置:
sudo make VIMRUNTIMEDIR=/usr/local/share/vim/vim82
或者指定最多可運行多少jobs 以防止小機器受不了享钞,因為不限制它會隨便開:
make -j 4
在跑完make 和install 命令后揍诽,vim 應該就已經(jīng)安裝好了。再次查看一下版本應該就是最新的了栗竖。
如果沒有變化的話暑脆,可能是因為shell 的緩存機制導致的,可以另開一個shell 或者用下面的命令更新一下緩存:
hash vim
大功告成~