从源码构建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的更多相关文章

  1. 创作gtk源码级vim帮助文档 tags

    创作gtk源码级vim帮助文档 tags 缘由 那只有看到源码了.在linux源码上有个网站 http://lxr.linux.no /+trees, 可以很方面的查出相应版本的代码实现,gtk没有. ...

  2. 从源码Build vim以及打包.deb

    How to build vim 1. Build步骤 git clone --depth https://github.com/vim/vim.git # download the source c ...

  3. java开源即时通讯软件服务端openfire源码构建

    java开源即时通讯软件服务端openfire源码构建 本文使用最新的openfire主干代码为例,讲解了如何搭建一个openfire开源开发环境,正在实现自己写java聊天软件: 编译环境搭建 调试 ...

  4. Flink源码分析 - 源码构建

    原文地址:https://mp.weixin.qq.com/s?__biz=MzU2Njg5Nzk0NQ==&mid=2247483692&idx=1&sn=18cddc1ee ...

  5. vue源码分析—Vue.js 源码构建

    Vue.js 源码是基于 Rollup 构建的,它的构建相关配置都在 scripts 目录下.(Rollup 中文网和英文网) 构建脚本 通常一个基于 NPM 托管的项目都会有一个 package.j ...

  6. Elasticsearch源码分析 - 源码构建

    原文地址:https://mp.weixin.qq.com/s?__biz=MzU2Njg5Nzk0NQ==&mid=2247483694&idx=1&sn=bd03afe5a ...

  7. centos7 源码构建、安装dubbo-monitor

    按照官方文档 ,发现dubbo-monitor-simple-x.x.x-assembly.tar.gz  下载不下来(地址访问不了),那么就自己下载源码构建吧. 我的zookeeper,hadoop ...

  8. 内核源码阅读vim+cscope+ctags+taglist

    杜斌博客:http://blog.db89.org/kernel-source-read-vim-cscope-ctags-taglist/ 武特博客:http://edsionte.com/tech ...

  9. Vue.js 源码构建(三)

    Vue.js 源码是基于 Rollup 构建的,它的构建相关配置都在 scripts 目录下. 构建脚本 通常一个基于 NPM 托管的项目都会有一个 package.json 文件,它是对项目的描述文 ...

随机推荐

  1. TensorRT 基于Yolov3的开发

    TensorRT 基于Yolov3的开发 Models Desc tensorRT for Yolov3 https://github.com/lewes6369/TensorRT-Yolov3 Te ...

  2. 35 张图带你 MySQL 调优

    这是 MySQL 基础系列的第四篇文章,之前的三篇文章见如下链接 138 张图带你 MySQL 入门 47 张图带你 MySQL 进阶!!! 炸裂!MySQL 82 张图带你飞 一般传统互联网公司很少 ...

  3. Java 将PPT幻灯片转为HTML

    本文以Java程序代码为例展示如何通过格式转换的方式将PPT幻灯片文档转为HTML文件.这里的PPT幻灯片可以是.ppt/.pptx/.pps/.ppsx/.potx等格式. 代码实现思路:[加载PP ...

  4. C#开发之基于NPOI的操作Excel开发体验

    最近遇到一个数据导入的需求,语言是.net framework 4.7的C#.但是,这次主要探讨NPOI的体验,原则就是向前兼容.所以采用.xls的支持.网上的资料,我稍微整合了一些. #1 单元格下 ...

  5. TOP-5错误率

    TOP-5错误率是指每幅图像同时用5个类别标签进行预测:如果其中任何一次预测正确,就认为预测正确,如果5次预测的结果都错了,才认为预测错误,这时的分类错误率就是TOP-5错误率.

  6. csp-s模拟测试52-53

    留坑.... 改完题再说吧. 留坑....最近考得什么鬼??模拟53T1 u(差分) 一道差分题????然而考场没有想到如何维护斜率上的差分,事后经miemeng和cyf的生(xuan)动(xue)讲 ...

  7. hash表及带注释插头dp

    struct hash_map { node s[SZ+10];int e,adj[SZ+10]; inline void init(){e=0;memset(adj,0,sizeof(adj));} ...

  8. Python分析44130条用户观影数据,挖掘用户与电影之间的隐藏信息!

    01.前言 很多电影也上映,看电影前很多人都喜欢去 『豆瓣』 看影评,所以我爬取44130条 『豆瓣』 的用户观影数据,分析用户之间的关系,电影之间的联系,以及用户和电影之间的隐藏关系. 02.爬取观 ...

  9. external-provisioner源码分析(1)-主体处理逻辑分析

    更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 概述 接下来将对external-provisioner组件进行源码分析. 在external ...

  10. 12-1 MySQL数据库备份(分库)

    #!/bin/bash source /etc/profile DATE="$(date +%F_%H-%M-%S)" DB_IP="172.16.1.122" ...