Linux 下源码编译安装 vim 8.1
前言
目前 linux 的各个发行版基本上都是带了一个 vi 编辑器的,而本文要说的 vim 编辑器对 vi 做了一些优化升级,更好用。当我们需要远程操作一台 linux 服务器的时候,只能使用命令行,这意味着如果你需要编辑文本,就只能用命令行编辑器。流行的编辑器有 vim 、emacs、nano,其中最简单易用的是 nano ,vim 次之,最困难的是 emacs。如果说谁最好用,那没有的,编辑器没有好不好用的说法,只有使用者是否习惯它的思维,编辑器是真的有它自己的想法的,你得顺着它的思路走。
背景
那为什么非得从源码编译安装 vim 呢?原因是 vim 可以支持很多特性,可以自由开启和关闭,但这只能是从源码编译安装才可以做到。而操作系统自带的 vim 往往只开启了很少的特性,无法满足我们日常变成的需求,比如我需要它开启支持 python 3 的特性,那我只能先卸载操作系统自带的 vim ,然后自己编译安装。
下面展示一些示例,给大家看一下。
首先是我的服务器上的自带 vim :

其次是我自己的日常 vim

任务
完美地从源码编译安装 vim 8.1
安装
声明:本文所述的安装方法参考自 Google 开源项目 YouCopleteMe,在它的 wiki 页可以找到。地址:
https://github.com/Valloric/YouCompleteMe/wiki/Building-Vim-from-source
本文所述的安装方法已经可满足绝大多数的日常 vim 使用需求了
环境:
- 操作系统:archlinux
- shell:zsh
- 适用于 archlinux、debian/ubuntu、centos/fedora (注意:都是最新或者接近最新的版本,不讨论远古系统)
- mac 用户推荐使用 homebrew
第一步:彻底卸载操作系统自带的 vim
archlinux 用户:
sudo pacman -Rsn vi vim-tiny vim vim-runtime gvim vim-common vim-gui-common vim-nox
debian/ubuntu 用户:
sudo apt-get remove --purge vi vim-tiny vim vim-runtime gvim vim-common vim-gui-common vim-nox
其他发行版用户,可自行搜索卸载命令
执行完卸载命令之后,强烈建议全局查找包含 vim 字样的文件和文件夹,手动删除,以免有漏网之鱼。如果卸载不干净,之后编译安装完了之后,很可能某种特性开启失败,导致又要重装,在任意文件夹下执行:
sudo find / -name "*vim*" > ~/find_vim_result
查找的结果都会在 ~/find_vim_result 中记录,你需要对照着这个记录,一个个手动去删除,但是要注意,有些是不可删除的文件,比如:
/usr/share/libquvi-scripts/0.9.20131130/media/vimeo.lua
/usr/lib/modules/4.18.3-arch1-1-ARCH/kernel/drivers/media/platform/vimc/vimc_sensor.ko.xz
/usr/lib/modules/4.18.3-arch1-1-ARCH/kernel/drivers/media/platform/vimc/vimc-debayer.ko.xz
/usr/lib/modules/4.18.3-arch1-1-ARCH/kernel/drivers/media/platform/vimc/vimc_scaler.ko.xz
如果大量操作系统文件被误删,很有可能你需要重装系统,千万注意。
第二步:克隆 vim 源代码
在任意文件夹下执行
git clone https://github.com/vim/vim.git
进入 vim 项目文件夹
cd ./vim
第三步:安装依赖库
archlinux 用户:
无需安装任何依赖
debian/ubuntu 用户:
sudo apt install libncurses5-dev libgnome2-dev libgnomeui-dev libgtk2.0-dev libatk1.0-dev libbonoboui2-dev libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev python3-dev ruby-dev lua5.1 liblua5.1-dev libperl-dev git
fedora 20 用户:
首先
sudo yum install -y ruby ruby-devel lua lua-devel luajit luajit-devel ctags git python python-devel python3 python3-devel tcl-devel perl perl-devel perl-ExtUtils-ParseXS perl-ExtUtils-XSpp perl-ExtUtils-CBuilder perl-ExtUtils-Embed
然后
sudo ln -s /usr/bin/xsubpp /usr/share/perl5/ExtUtils/xsubpp
第四步:configure vim
./configure --with-features=huge \
--enable-multibyte \
--enable-rubyinterp=yes \
--enable-python3interp=yes \
--with-python-config-dir=/usr/lib/python3.7/config-3.7m-x86_64-linux-gnu \
--enable-perlinterp=yes \
--enable-luainterp=yes \
--enable-gui=gtk2 \
--enable-cscope \
--prefix=/usr/local
请注意:把 python3-config-dir 这个目录换成你自己的,就是你的操作系统自带的 python3 的 config 目录,/usr/lib/python3.7/config-3.7m-x86_64-linux-gnu 这个是我的目录,跟你的可能不一样,请自行查找
强烈建议你把这一条命令先复制到某个编辑器中,然后修改完路径之后,再粘贴到终端里面去执行
在这个命令中,我们开启的主要是 ruby、python3、perl、lua,我建议你只开启 python3,如果你觉得有必要,那就只开启 python2,如果同时开启 python3 和 python2 会产生很多冲突,这个配置可以满足绝大多数的 python、go 的开发任务了。
第五步:make
make VIMRUNTIMEDIR=/usr/local/share/vim/vim81
第六步:安装到系统中
sudo make install
第六步:查看特性是否已经开启
vim --version
第七步:额外说明
建议使用 terminal 版本的 vim ,不建议使用 gvim、macvim 之类的 gui
我日常使用的 vim 都是按照这个流程来走的,满足了绝大多数的开发需求,外加装了很多插件和自己写的插件,开发 python、go 足够了,并且还可以完美的书写 markdown ,胜任了一切编辑工作。但是如果要开发 .net 还是建议使用宇宙第一 IDE visual studio 或者编辑器 visual studio code
vim 其实真不是个好东西,你会发现自己越来越懒,懒到什么程度呢?
以前在 windows 下做开发,用 visual studio ,好多快捷键再配合鼠标好方便。自从熟练使用 vim 之后,每次浏览 web 的时候一拿鼠标,我都觉得怎么这么烦!又要碰鼠标。还有最毒的一个地方:H J K L
vim 彻底地把这四个键妖魔化了,以前不熟练的时候,我觉得明明上下左右四个箭头更快啊。后来熟练 H J K L了之后,有时候不得不按上下左右键的时候,我会觉得好烦啊!我的手腕又要动了!又浪费了我 0.5 秒!我现在感觉,如果我的手指需要离开字母按键区域就是在浪费力气! 我很想把Backspace 键给它扣掉!
最神奇的一个按键:ESC
这个键离得最远,但是我竟然对它一点都不排斥,反而觉得这个距离竟然刚刚好!每天不按它上万遍就浑身难受,这是怎么回事!
Linux 下源码编译安装 vim 8.1的更多相关文章
- Linux下源码编译安装rpy2
R(又称R语言)是一款开源的跨平台的数值统计和数值图形化展现工具.rpy2是Python直接调用R的第三方库,它可以实现使用python读取R的对象.调用R的方法以及Python与R数据结构转换等.这 ...
- 在Linux下源码编译安装GreatSQL/MySQL
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 本 ...
- 1、Linux下源码编译安装PostgreSQL
操作系统:Centos7 说明:postgresql必须在postgres用户下初始化数据库和启动,否则报错. PostgreSQL的特性 PostgreSQL是一种几乎可以运行在各种平台上的免费的开 ...
- Linux下源码编译安装PostgreSQL数据库
我使用的Postgres的源码版本为 postgresql-9.3.5.系统为 CentOS6.5 ,是64位. 下载以后直接阅读其中的 README然后阅读其中的INSTALL,按照其中将的步骤做就 ...
- linux下源码编译安装mysql
1.安装依赖的包: yum install -y gdb cmake ncurses-devel bison bison-devel 2.创建mysql安装目录和数据文件目录 mkdir -p /us ...
- Linux下源码编译安装MySql,centeros7
1. 安cmake工具 # yum install -y cmake 2. 创建mysql用户 #useradd -s /sbin/nologin mysql //设置为非登陆用户(安全) 3. ...
- Linux下源码编译安装MySQL 5.5.8
准备工作: 新建用户和用户组 groupadd mysql useradd -g mysql mysql 1:下载: bison-2.4.2.tar.bz2 cmake-2.8.3.tar.gz ma ...
- Linux 从源码编译安装 OpenSSH
https://blog.csdn.net/bytxl/article/details/46639073 Linux 从源码编译安装 OpenSSH以及各问题解决 2015年06月25日 17:37: ...
- CentOS 6.6 下源码编译安装MySQL 5.7.5
版权声明:转自:http://www.linuxidc.com/Linux/2015-08/121667.htm 说明:CentOS 6.6 下源码编译安装MySQL 5.7.5 1. 安装相关工具# ...
随机推荐
- 【CSS系列】布局篇
一.让设计居中 1.使用自动空白边让设计居中 <style type="text/css"> body{ text-align:center; min-width:76 ...
- html-withimg-loder
由于 webpack 对 html 的处理不太好,打包 HTML 文件中的图片资源是相对来说最麻烦的.这里需要引用一个插件—— html-withimg-loder // 打包 HTML 文件中的图片 ...
- centos7上开启单用户模式
author: headsen chen date : 2018-08-02 11:23:16 1,在出现centos7的页面的时候,按 e进入到编译内核的界面 2,找到下面的这一段,将ro 该车 ...
- Egret3D初步学习笔记四 (地形使用)
一 导出地形 Skinedmesh没反应.得选择导出scene. 二 直接报错 三 修改错误 选择关闭程序后,仍然可以导出完成. 由于地图的lightmap.exr没法解析报错. 在获得MapCon ...
- SQL中distinct的用法(转载)
1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值.关键词 ...
- 【JavaScript算法】---快速排序法
一.快速排序法概念 我们将一个杂乱无章的数组进行一个快速排序,可以先从一个数组中取一个中间值,将一个数组一分为2,左边的数组跟中间值进行比较,小的放在左边,大的放在右边.比较完毕后再次取中间值,再次比 ...
- JS将阿拉伯数字转为钱
function DX(n) { if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)) return "数据非法" ...
- ValueError: Only call `sparse_softmax_cross_entropy_with_logits` with named a
第五章中完整的训练MNIST数据的神经网络模型的程序代码中,直接运行程序的话会遇到以下的错误. 把下面的这行代码 # 计算交叉熵及其平均值 cross_entropy = tf.nn.sparse_s ...
- Apache 2.4 编码GB2312中文乱码的问题
今天部署了一个项目,代码和数据库都是gb2312的,本地和服务器都是apache2.4的版本,本地编码没问题,response的content-type是空的.按html的mete解析的,查看源码也是 ...
- django如何防止csrf(跨站请求伪造)
什么是CSRF 下面这张图片说明了CSRF的攻击原理: Django中如何防范CSRF Django使用专门的中间件(CsrfMiddleware)来进行CSRF防护.具体的原理如下: 1.它修改当前 ...