美文网首页
从源码构建Vim

从源码构建Vim

作者: 阿兵 | 来源:发表于2021-07-13 14:56 被阅读0次

    从源码构建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
    

    大功告成~

    相关文章

      网友评论

          本文标题:从源码构建Vim

          本文链接:https://www.haomeiwen.com/subject/bkmtpltx.html