從源碼構(gòu)建Vim

從源碼構(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

大功告成~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狐肢,一起剝皮案震驚了整個濱河市添吗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌份名,老刑警劉巖碟联,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異僵腺,居然都是意外死亡鲤孵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門辰如,熙熙樓的掌柜王于貴愁眉苦臉地迎上來普监,“玉大人,你說我怎么就攤上這事琉兜】” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵呕童,是天一觀的道長漆际。 經(jīng)常有香客問我淆珊,道長夺饲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮往声,結(jié)果婚禮上擂找,老公的妹妹穿的比我還像新娘。我一直安慰自己浩销,他們只是感情好贯涎,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著慢洋,像睡著了一般塘雳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上普筹,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天败明,我揣著相機與錄音,去河邊找鬼太防。 笑死妻顶,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蜒车。 我是一名探鬼主播讳嘱,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼酿愧!你這毒婦竟也來了沥潭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嬉挡,失蹤者是張志新(化名)和其女友劉穎叛氨,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棘伴,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡寞埠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了焊夸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仁连。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖阱穗,靈堂內(nèi)的尸體忽然破棺而出饭冬,到底是詐尸還是另有隱情,我是刑警寧澤揪阶,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布昌抠,位于F島的核電站,受9級特大地震影響鲁僚,放射性物質(zhì)發(fā)生泄漏炊苫。R本人自食惡果不足惜裁厅,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侨艾。 院中可真熱鬧执虹,春花似錦、人聲如沸唠梨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽当叭。三九已至茬故,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蚁鳖,已是汗流浹背均牢。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留才睹,地道東北人徘跪。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像琅攘,于是被迫代替她去往敵國和親垮庐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容