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平台上和跨平台上有层出不穷的后起之秀不断挑战它 ...
随机推荐
- word安装mathtype
1:window版本的mathtype:https://pan.baidu.com/s/1Yn8kPG9Y9nBPGaotFJaL2Q ,密码spwm 2:点击exe安装 (安装到c盘,将不会出 ...
- 在jQuery中解决事件冒泡问题
<pre name="code" class="html">事件会按照DOM层次结构像水泡一样不断向上直至顶端 解决方法:在事件处理函数中返回fal ...
- c/c++ json使用
比如出名的有CJson,c++一般用jsoncpp http://sourceforge.net/projects/jsoncpp/ jsoncpp:http://www.cnblogs.com/fe ...
- rails 数据验证
validates :money, :presence => true, :numericality => {:only_integer => true}
- liunx 命令行快捷键 常用命令
常用指令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir ...
- python使用set来去重碰到TypeError: unhashable type
新版:Python 的 unhashable type 错误分析及解决 python使用set来去重是一种常用的方法. 一般使用方法如下: # int a = [1, 2, 3, 4, 5, 1, 2 ...
- python中小数点后取2位(四舍五入)以及取2位(四舍五不入)
一.小数点后取2位(四舍五入)的方法方法一:round()函数其实这个方法不推荐大家使用,查询资料发现里面的坑其实很多,python2和python3里面的坑还不太一样,在此简单描述一下python3 ...
- Vim 操作命令不完全汇总
.命令:"重复上次修改": x命令:删除光标下的字符: u命令:撤销上次修改: dd命令:删除整行: >G命令:增加从当前行到文档末尾处的层级缩进: $命令:把光标移至行尾: ...
- [SpringBoot] - 配置文件的多种形式及JSR303数据校验
Springboot配置文件: application.yml application.properties(自带) yml的格式写起来稍微舒服一点 在application.properties ...
- python 简单的猜数字游戏
!/usr/bin/env python --encoding:utf-8-- import random think=random.randint(1,10) print ("...... ...