Vim技能修炼教程(17) - 编译自己的Vim
编译自己的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的更多相关文章
- Vim技能修炼教程(2) - 语法高亮速成
语法高亮速成 我们继续在人间修行Vim技能之旅.上一次我们学习了如何通过vundle安装插件,这次我们迅速向写插件的方向挺进. 我们先学习一个最简单的语法高亮插件的写法. 语法高亮基本上是由三部分组成 ...
- Vim技能修炼教程(12) - Vim的脚本语言支持
Vim的脚本语言支持 本节开始,我们正式接触vimscript这门古老的脚本语言. 首先要说明,vim支持的扩展语言很多,比如python, python3, ruby, lua,tcl等常见脚本语言 ...
- Vim技能修炼教程(10) - 代码跳转
程序员功能 前面我们用了5讲的篇幅来讲基本编辑的基本功:第4讲是基本操作,第5讲是操作符,第6讲行编辑ex命令,第7讲可视模式,第8讲多窗口,第9讲缓冲区和标签页. 从这一讲开始,我们从通用功能向程序 ...
- Vim技能修炼教程(16) - 浮点数计算函数
浮点数计算函数 这一节的所有函数,只有在vim编译时支持了+float时才有效. 三角函数 sin() : sine正弦函数 cos() : cosine余弦函数 tan() : tangent正切函 ...
- Vim技能修炼教程(15) - 时间和日期相关函数
Vimscript武器库 前面我们走马观花地将Vimscript的大致语法过了一遍.下面我们开始深入看一下Vimscript都给我们准备了哪些武器.如果只用这些武器就够了,那么就太好了,只用Vimsc ...
- Vim技能修炼教程(13) - 变量
VimScript变量 上节我们介绍了Python和Ruby来编写Vim插件的方式. 不过,Python和Ruby并不是所有的Vim都支持的功能,如果以最小依赖的原则来说,还是原汁原味的Vimscri ...
- Vim技能修炼教程(8) - 多窗口
多窗口 如果一个vim只能开一个窗口,那肯定是有点low.尤其是写代码的时候,打开多个文件是经常的需求. 速成教程 横着切成两个 :split 文件名 上下切换窗口 Ctrl-W加上上下键,可以实现上 ...
- Vim技能修炼教程(3) - 语法高亮进阶
语法高亮进阶 首先我们复习一下上节学到的三个命令: * syntax match用于定义正则表达式和规则的对应 * highlight default定义配色方案 * highlight link将正 ...
- Vim技能修炼教程(1) - 使用vundle管理插件
世界上有两个伟大的编辑器:一个是emacs,一个是vi.它们从诞生以来,一直在Unix/Linux世界得到最广泛的支持. 尽管过了几十年,在Windows平台上和跨平台上有层出不穷的后起之秀不断挑战它 ...
随机推荐
- Spring MVC 复习笔记04
复习 springmvc框架: DispatcherServlet前端控制器:接收request,进行response HandlerMapping处理器映射器:根据url查找Handler.(可以通 ...
- animation CSS3动画总结
最近一个小游戏项目用到了CSS3的动画属性,例如transition.transform.animation.经过三个星期,终于做完了,利用周末好好梳理总结一下. keyframes这个属性用来定义一 ...
- HTTP从入门到入土(3)——TCP三次握手
TCP三次握手 客户端与服务器之间互相发送HTTP请求响应之前需要先进行TCP连接,因为HTTP是一个无连接.无状态协议,不存在连接的概念,只有请求和响应的概念.而请求和响应实际上只是数据包,他们需要 ...
- CentOS6.5下Cloudera安装搭建部署大数据集群(图文分五大步详解)(博主强烈推荐)
不多说,直接上干货! 第一步: Cloudera Manager安装之Cloudera Manager安装前准备(CentOS6.5)(一) 第二步: Cloudera Manager安装之时间服务 ...
- ThinkPHP5 快速入门文档
一. 5.0版本采用模块化的设计架构,默认的应用目录下面只有一个index模块目录,如果我要添加新的模块可以使用控制台命令来生成. 切换到命令行模式下,进入到应用根目录并执行如下指令: php thi ...
- Cooperation.GTST团队第四周项目总结
项目进展 这周我们的主要学习内容是: 1.研究学习如何导入博客详情页. 2.继续研究如何使用博客园的相关接口,导入相关jar包实现页面整体效果: 在我们使用其它APP或者上网浏览论坛.网页等时,通常都 ...
- Python学习札记(三十一) 面向对象编程 Object Oriented Program 2
参考:类和实例 注意理解第七点. NOTE: 1.类是抽象的模板,比如Student类,实例是根据类创建出来的一个个具体的"对象",每个对象都拥有相同的方法,但各自的数据可能不同. ...
- POJ Stockbroker Grapevine(floyd)
https://vjudge.net/problem/POJ-1125 题意: 题意不是很好理解,首先输入一个n,表示有n个股票经纪人,接下来输入n行,每行第一个数m为该股票经纪人认识的经纪人数,然后 ...
- hdu KiKi's K-Number 主席树
KiKi's K-Number Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- FreeSouth的学习osg小贴士
http://www.osgchina.org/index.php?option=com_content&view=article&id=150&catid=91&It ...