当前位置: 首页 > news >正文

从源代码编译 Vim 8.0

从源代码编译 Vim 实际上并不那么困难。下面是你所要做的:

1、首先,安装包括 Git 在内的所有必备的库。对于一个 Debian 类的 Linux 发行版,例如 Ubuntu,命令如下:

 
 
  1. sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev \
  2. libgtk2.0-dev libatk1.0-dev libbonoboui2-dev \
  3. libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev \
  4. python3-dev ruby-dev lua5.1 lua5.1-dev libperl-dev git

在 Ubuntu 16.04 上,lua 开发包的名称是 liblua5.1-dev 而非 lua5.1-dev

如果你知道你将使用哪种语言,可随意删去你不需要的包。例如:Python2 python-dev 或者是 Rubyruby-dev。这一原则适用于本文的大部分内容。

对于 Fedora 20,将是以下命令:

 
 
  1. sudo yum install -y ruby ruby-devel lua lua-devel luajit \
  2. luajit-devel ctags git python python-devel \
  3. python3 python3-devel tcl-devel \
  4. perl perl-devel perl-ExtUtils-ParseXS \
  5. perl-ExtUtils-XSpp perl-ExtUtils-CBuilder \
  6. perl-ExtUtils-Embed

在 Fedora 20 上需要这一步来纠正安装 XSubPP 时出现的问题:

 
 
  1. ### 从 /usr/bin 到 perl 目录做个 xsubpp (perl) 的符号链接
  2. sudo ln -s /usr/bin/xsubpp /usr/share/perl5/ExtUtils/xsubpp

2、 如果你已经安装了 vim,删掉它。

 
 
  1. sudo apt-get remove vim vim-runtime gvim

如果是 Ubuntu 12.04.2,你或许也需要同时删除下面这些软件包:

 
 
  1. sudo apt-get remove vim-tiny vim-common vim-gui-common vim-nox

3、 一旦上述内容都被安装好之后,获取 vim 源代码很容易。

注意:如果你使用 python,你的配置目录或许有一个特定的机器名 (例如 config-3.5m-x86_64-linux-gnu)。检查 /usr/lib/python[2/3/3.5] 目录来找到你的 python 配置目录,据此更改 python-config-dir 和/或 python3-config-dir的参数。

添加/删除下面的编译参数以适合您的设置。例如,如果您不打算写任何 Lua 脚本,您可以删去 enable-luainterp

同时,如果你使用的不是 vim 8.0,请确认下面 VIMRUNTIMEDIR 参数设置正确(例如,如果使用 vim 8.0a, 就用 /usr/share/vim/vim80a)。记住,一些 vim 安装是直接安装在 /usr/share/vim 下的;调整好参数以适应你的系统:

 
 
  1. cd ~
  2. git clone https://github.com/vim/vim.git
  3. cd vim
  4. ./configure --with-features=huge \
  5. --enable-multibyte \
  6. --enable-rubyinterp=yes \
  7. --enable-pythoninterp=yes \
  8. --with-python-config-dir=/usr/lib/python2.7/config \
  9. --enable-python3interp=yes \
  10. --with-python3-config-dir=/usr/lib/python3.5/config \
  11. --enable-perlinterp=yes \
  12. --enable-luainterp=yes \
  13. --enable-gui=gtk2 --enable-cscope --prefix=/usr
  14. make VIMRUNTIMEDIR=/usr/share/vim/vim80

在 Ubuntu 16.04 上,由于同时开启了 Python2 和 Python3,Python 支持将不工作。 阅读 chirinosky 的回答 以获取变通的处理方法。

如果你想将来轻松卸载 vim,可以使用 checkinstall 来安装 。

 
 
  1. sudo apt-get install checkinstall
  2. cd ~/vim
  3. sudo checkinstall

否则,可以使用 make 来安装。

 
 
  1. cd ~/vim
  2. sudo make install

要让 vim 成为你默认的编辑器,请使用 update-alternatives

 
 
  1. sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 1
  2. sudo update-alternatives --set editor /usr/bin/vim
  3. sudo update-alternatives --install /usr/bin/vi vi /usr/bin/vim 1
  4. sudo update-alternatives --set vi /usr/bin/vim

4、 再检查下,通过查看 vim --version 输出来确认确实在运行新的 Vim 应用程序版本。

如果你的 gvim 不工作(在 ubuntu 12.04.1 LTS 上),试着把 --enable-gui=gtk2 参数变为 --enable-gui=gnome2

如果你遇到问题,仔细检查在步骤 3 开始提到的,使用正确的 Python 配置目录配置 configure

这些 configure 和 make 命令假设你是一个 Debian 发行版,Vim 的运行库文件目录放在/usr/share/vim/vim80/,这不是 vim 的默认路径。 在 configure 命令中的 --prefix=/usr 也是如此。这些参数或许对一个不是基于 Debian 的 Linux 发行版来说是有所不同的,在这种情况下,试着移除 configure 命令中的 --prefix 变量和 make 命令中的 VIMRUNTIMEDIR (换句话说,使用这些参数的默认值)。

原文发布时间为:2017-01-06

本文来自云栖社区合作伙伴“Linux中国”

相关文章:

  • 2015年北京大学软件project学科优秀大学生夏令营上机考试---C:单词翻转面试题...
  • Ubuntu 安装chrome
  • Java:对象的强、软、弱和虚引用
  • Linux转发性能评估与优化(转发瓶颈分析与解决方式)
  • MFC Wizard创建的空应用程序中各个文件内容的解析
  • Codeforces Round #417 (Div. 2) B. Sagheer, the Hausmeister
  • CloudXNS API PHP SDK V1.0,增加DDNS等特性
  • Firefox 表示不计划开发 Windows 10 手机 APP
  • 没有硬件的 WWDC:苹果欲再造生态圈?
  • mongodb.conf配置文件详解
  • Manjaro Linux 17.0.2 pre 5 发布
  • 微软 PowerShell 成为黑客恶意软件传播工具
  • Docker 收购 Tutum,进一步完善其生态布局
  • 软件工程——团队答辩
  • Scrapy基础(十四)————Scrapy实现知乎模拟登陆
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • egg(89)--egg之redis的发布和订阅
  • Javascript弹出层-初探
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • JS基础之数据类型、对象、原型、原型链、继承
  • Markdown 语法简单说明
  • mongo索引构建
  • python 装饰器(一)
  • 百度地图API标注+时间轴组件
  • 初识 webpack
  • 记录:CentOS7.2配置LNMP环境记录
  • 理解在java “”i=i++;”所发生的事情
  • 前端自动化解决方案
  • 首页查询功能的一次实现过程
  • 网络应用优化——时延与带宽
  • 以太坊客户端Geth命令参数详解
  • 鱼骨图 - 如何绘制?
  • 智能网联汽车信息安全
  • kubernetes资源对象--ingress
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (AngularJS)Angular 控制器之间通信初探
  • (TOJ2804)Even? Odd?
  • (初研) Sentence-embedding fine-tune notebook
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)ssm码农论坛 毕业设计 231126
  • (四)Controller接口控制器详解(三)
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET 8.0 中有哪些新的变化?
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .sh
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @Data注解的作用