编译自己的Vim

前面我们已经对Vim有比较丰富的了解了。我们也知道Vim有很多编译时的选项,很多功能依赖于这些编译选项。其中最重要的就是脚本语言的支持,很多发行版本是不全的。为了支持我们所需要的功能,我们需要编译自己的Vim.

首先我们要下载Vim的源代码:

git clone https://github.com/vim/vim.git

Linux上编译Vim

以Ubuntu为例,首先要安装一些库的开发包,例:

sudo apt-get 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 ruby-dev mercurial

图形化界面支持

GUI已经统治世界了,GUI会给用户带来方便,我们后面也会讲菜单的用法。首先,我们需要能编译出带GUI的版本。

enable-gui支持下面一些选项:

* auto: 由vim自动选择

* no: 没有gui

* gtk2

* gtk3

* gnome2

* motif

* athena

* neXtaw

* photon

* carbon

我们首先试试使用motif库的效果:

实现步骤:

1. 首先安装motif库。

2. 然后安装motif-dev库。

3. configure –enable-gui=motif

如何安装motif库呢,我们以ubuntu 12.04为例,首先启动vim,执行下面的命令

:read !apt-cache search motif

然后我们在结果里面看到了libmotif4和libmotif-dev,分别用:!sudo apt-get install去安装它们就好。

然后执行:

configure --enable-gui=motif
make

运行src/vim -g,就可以看到motif界面的vim啦。

同样的方法,我们可以用来生成gtk2,gtk3, gnome2等界面风格。

扩展语言的支持

Vim目前一共支持7种扩展语言:

* lua: Lua语言

* perl:Perl语言

* python:Python语言2.x版本

* python3:Python语言3.x版本

* tcl:Tcl语言。

* ruby: Ruby语言

* mzscheme: Racket语言,是Scheme语言的一种方言。

支持这些语言需要三步曲:

1. 安装语言本身。要支持一门语言,连语言都不安装说不过去哈

2. 安装语言的开发包。vim需要头文件和开发库

3. configuration打开支持选项

对于需要指定语言路径的,可能还需要第4步。

我们以perl为例来说明:

第一步,安装perl:

sudo apt-get install perl

sudo apt-get install perl6

第二步,安装perl的开发库:

sudo apt-get install libperl-dev

第三步,重新配置并编译

./configure --enable-perlinterp

这些都配好了之后,我们就可以编译出一版基本上全功能的版本了:

编译命令示例:

./configure --enable-gui=gtk3 --enable-python3interp --enable-pythoninterp --enable-rubyinterp --enable-luainterp --enable-mzschemeinterp --enable-perlinterp --with-vim-name=vim8

Mac上编译vim

在Mac上,我们需要一个定制的版本MacVim:https://github.com/macvim-dev/macvim

enable-gui时不用指定,默认就好。

命令例:



./configure --enable-gui --enable-pythoninterp --enable-python3interp --enable-perlinterp --enable-mzschemeinterp --enable-rubyinterp --enable-cscope --enable-tclinterp --enable-luainterp --with-lua-prefix=/usr/local/Cellar/lua/5.2.4_4/

编译之后会生成Vim.app,带图形界面:

在mac上缺什么模块就用Homebrew来安装,一般不用指定,都可找到。

Vim技能修炼教程(17) - 编译自己的Vim的更多相关文章

  1. Vim技能修炼教程(2) - 语法高亮速成

    语法高亮速成 我们继续在人间修行Vim技能之旅.上一次我们学习了如何通过vundle安装插件,这次我们迅速向写插件的方向挺进. 我们先学习一个最简单的语法高亮插件的写法. 语法高亮基本上是由三部分组成 ...

  2. Vim技能修炼教程(12) - Vim的脚本语言支持

    Vim的脚本语言支持 本节开始,我们正式接触vimscript这门古老的脚本语言. 首先要说明,vim支持的扩展语言很多,比如python, python3, ruby, lua,tcl等常见脚本语言 ...

  3. Vim技能修炼教程(10) - 代码跳转

    程序员功能 前面我们用了5讲的篇幅来讲基本编辑的基本功:第4讲是基本操作,第5讲是操作符,第6讲行编辑ex命令,第7讲可视模式,第8讲多窗口,第9讲缓冲区和标签页. 从这一讲开始,我们从通用功能向程序 ...

  4. Vim技能修炼教程(16) - 浮点数计算函数

    浮点数计算函数 这一节的所有函数,只有在vim编译时支持了+float时才有效. 三角函数 sin() : sine正弦函数 cos() : cosine余弦函数 tan() : tangent正切函 ...

  5. Vim技能修炼教程(15) - 时间和日期相关函数

    Vimscript武器库 前面我们走马观花地将Vimscript的大致语法过了一遍.下面我们开始深入看一下Vimscript都给我们准备了哪些武器.如果只用这些武器就够了,那么就太好了,只用Vimsc ...

  6. Vim技能修炼教程(13) - 变量

    VimScript变量 上节我们介绍了Python和Ruby来编写Vim插件的方式. 不过,Python和Ruby并不是所有的Vim都支持的功能,如果以最小依赖的原则来说,还是原汁原味的Vimscri ...

  7. Vim技能修炼教程(8) - 多窗口

    多窗口 如果一个vim只能开一个窗口,那肯定是有点low.尤其是写代码的时候,打开多个文件是经常的需求. 速成教程 横着切成两个 :split 文件名 上下切换窗口 Ctrl-W加上上下键,可以实现上 ...

  8. Vim技能修炼教程(3) - 语法高亮进阶

    语法高亮进阶 首先我们复习一下上节学到的三个命令: * syntax match用于定义正则表达式和规则的对应 * highlight default定义配色方案 * highlight link将正 ...

  9. Vim技能修炼教程(1) - 使用vundle管理插件

    世界上有两个伟大的编辑器:一个是emacs,一个是vi.它们从诞生以来,一直在Unix/Linux世界得到最广泛的支持. 尽管过了几十年,在Windows平台上和跨平台上有层出不穷的后起之秀不断挑战它 ...

随机推荐

  1. Openstack(七)keystone

    官方安装文档:https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/index.html 7.1 keystone简介 Keystone 中 ...

  2. c primer plus(五版)编程练习-第六章编程练习

    1.编写一个程序,创建一个具有26 个元素的数组,并在其中存储26 个小写字母.并让该程序显示该数组的内容. #include<stdio.h> #define SIZE 26 int m ...

  3. hadoop中map和reduce的数量设置

    hadoop中map和reduce的数量设置,有以下几种方式来设置 一.mapred-default.xml 这个文件包含主要的你的站点定制的Hadoop.尽管文件名以mapred开头,通过它可以控制 ...

  4. HDU4135Co-prime(容斥原理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4135 题目解析: 给你一个闭区间[A,B](1 <= A <= B <= 1015) ...

  5. CSV文件读取类

    最近项目中,经常需要读取Csv文件.基本步骤是: (1)按行读取 (2)然后将一行数据按逗号,分割为字符串数组 (3)将各列字符串转换成相应类型的数据 ,如int double类型 写了一个简单的Cs ...

  6. 关于Redis命令keys在性能方面的说明

    redis的keys命令类似于Mysql的like命令,无非就是模糊匹配相近的字符数据. KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能问题,如果你需要从一个数据集中查找特定的 k ...

  7. MP3的采样率和比特率

    我们听mp3,看电影都会注意到两个参数,常见的有采样率44.1KHz,比特率192Kbps,那么什么是采样率,什么是比特率?他们是什么关系呢?下面就我们就来简单做个解释: 把模拟音频信号转成数字音频信 ...

  8. 20145122 《Java程序设计》第二周学习总结

    20145122 <Java程序设计>第2周学习总结 教材学习内容总结 在大一的时候我们学习了C语言,所以对第三章的知识不是很陌生,但有些新知识需要记忆. java常用的数据类型: byt ...

  9. 高级bash脚本编程(三)

    高级bash脚本编程 知识点 compound 和 comparison -a 逻辑与 exp1 -a exp2 如果表达式 exp1 和 exp2 都为真的话,那么结果为真. -o 逻辑或 exp1 ...

  10. 从0开始学习 GITHUB 系列之「GITHUB 常见的几种操作」【转】

    本文转载自:http://stormzhang.com/github/2016/09/21/learn-github-from-zero8/ 版权声明:本文为 stormzhang 原创文章,可以随意 ...