Mac中安装Vim7.4
Mac上的Vim
Mac本身其实是预装了Vim的,但是目前的系统中都是Vim7.3版本的,而最新的Vim已经是7.4版了,因此为了能够使用最新版的vim,必须要对Mac中的vim要么升级,要么重装。在折腾过程中,遇到了一些问题,这里记录,以鉴后人。
可选方案
升级原生的Vim7.3
这种方法貌似是最”干净”的,不会引入其他任何多余的东西,对于有洁癖的人这应该是一种比较好的方案。但是,这个方案也有缺点,那就是它会覆盖原生的Vim,会改变系统的默认设置,并且一旦升级过程中出现了问题,那你就再也没有可用的vim了。另外一个问题是,以后当你系统升级的时候,很有可能你自己的vim又会被新系统的vim给覆盖,这样会比较麻烦。
使用MacVim
这是一种比较好的方案,Vim官网上也是推荐使用这种方案的,MacVim是针对Mac系统特别定制的Vim版本,安装过程也很简单,网上一搜一大把。它功能上和vim完全一致,不会有任何的问题。要说这种方案其实已经算是一个完美的解决方案了,但是它有一点不太方便的地方,那就是不能直接在终端中使用vim,每次使用MacVim的时候都会单独开启一个窗口,有点类似于windows中的gvim。而我个人是比较习惯在终端中写代码的,因此这个方案还是不能满足我的需求。
自己编译
这是一种终极的方案,但是自己编译的时候注意要手动更改默认的安装目录,不然它就会覆盖原生的vim7.3,这样就会变成第一种方案了。将vim7.4安装在其他目录,然后在.bash_profile中添加一个vim命令的别名,将其指向新安装的vim7.4的目录,而不是原生的vim7.3目录。这个方案就能在终端中直接使用vim7.4了,并且不会对原生的vim7.3又任何影响。这个方案唯一的缺点大概就是会在系统中产生两个不同版本的vim了,这也许对一些有洁癖的人是难以接受的。
我自己最终选择了第三套方案,也就是自己编译新版本的vim.
重新编译
好了,现在让我们开始折腾吧。
首先上vim的官网下载vim7.4的源文件,地址是:http://www.vim.org/sources.php
新建目录
/opt/loacl,这个目录就是用来存放我们新安装的vim7.4的,你也可以建立其他的目录,这里只是一个示例。进入vim的源文件目录中,在终端中运行命令:
./configure --with-features=huge --enable-pythoninterp=yes --enable-cscope --enable-fontset --enable-perlinterp --enable-rubyinterp --with-python-config-dir=/usr/lib/python2.6/config --prefix=/opt/local
这个命令是完成对vim的一些配置选项,启用了python和ruby的支持特性,这还是比较重要的,因为vim中有些插件会使用python和ruby的,如果没有开启这些特性,有些插件是无法运行的。在这些配置命令中,最后一个--prefix=/opt/local是用来指明安装目录的,你也可以修改成你自己的目录。
在写配置命令的时候,需要注意的是,不能写上--enable-gui,这是开启gui特性的,但是我们是在终端环境下安装的,因此不能开启这个特性,否则会出现编译错误。
- 在终端中执行
make命令.在make过程中,会出现一个错误,如下所示:
:info:build os_unix.c:830:46: warning: declaration of 'struct sigaltstack' will not be visible outside of this function [-Wvisibility]
:info:build extern int sigaltstack __ARGS((const struct sigaltstack *ss, struct sigaltstack *oss));
:info:build ^
:info:build ./os_unix.h:88:21: note: expanded from macro '__ARGS'
:info:build # define __ARGS(x) x
:info:build ^
:info:build os_unix.c:830:13: error: conflicting types for 'sigaltstack'
:info:build extern int sigaltstack __ARGS((const struct sigaltstack *ss, struct sigaltstack *oss));
:info:build ^
:info:build /usr/include/signal.h:89:5: note: previous declaration is here
:info:build int sigaltstack(const stack_t * __restrict, stack_t * __restrict) __DARWIN_ALIAS(sigaltstack);
:info:build ^
:info:build 1 warning and 1 error generated.
:info:build make[1]: *** [objects/os_unix.o] Error 1
:info:build make[1]: *** Waiting for unfinished jobs….)
解决方案也很简单,只需要在os_unix.h中加上#include <AvailabilityMacros.h>就可以了。
执行
make install.执行完成之后,vim7.4就安装完成了。添加
vim命令的别名,在.bash_profile中添加一行alias vim='/opt/local/bin/vim',然后在终端中执行source ~/.bash_profile
好了,现在你的Mac系统已经安装好了vim7.4了,现在可以开始愉快的工作了。
原文链接:http://zhouyichu.com/vim/Vim-in-Mac.html
Mac中安装Vim7.4的更多相关文章
- Mac中安装maven3.2.1
Mac中安装maven3.2.1 原文链接:http://blog.csdn.net/f_zongjian/article/details/24144803 本机OS X:10.9,未安装XCode, ...
- 在mac中安装tmux
在mac 中安装Tmux: 在终端输入如下命令: brew install tmux Tmux 的快捷键前缀(Prefix) 为了使自身的快捷键和其他软件的快捷键互不干扰,Tmux 提供了一个快捷键 ...
- Mac中安装node.js和npm
换了Mac需要安装noed.js和npm记录一下首先访问node.js官网(https://nodejs.org/en/download/) 点击下载完后,一路点安装 就安装完成了 然后打开-终端-输 ...
- 苹果MAC中安装并搭建Android开发环境的详细步骤
Android的开发平台搭建主要需要的工具有:Java虚拟机JDK.Eclipse.Eclipse插件ADT(Android Developer Tool)和Android开发包SDK,以下是具体的安 ...
- 在MAC中安装Compass的方法 (转)
在MAC中通过gem命令安装compass时会出异常,原因是compass版本更新了,一些运行时所用到的依赖软件的版本没能得到更新,故而出现错误.例如,用以下命令安装compass: $ gem in ...
- 在Mac中安装.Net Core的开发环境
在mac中部署dotnet core开发环境,我的MacOS版本号为OSX EI Capitan 10.11.6 1.安装brew homebrew官网推荐的安装命令如下: /usr/bin/ruby ...
- Mac中安装tensorflow(转)
当我们开始学习编程的时候,第一件事往往是学习打印"Hello World".就好比编程入门有Hello World,机器学习入门有MNIST.MNIST是一个识别手写数字的程序 M ...
- MAC 中安装和使用express
其实window系统和mac的操作在大致上其实是想同的,只是一些细节的区别,以下对在mac下安装和使用express做简要介绍,如有不妥之处请各位大神指教. 一.首先要测试node和npm是否已经正确 ...
- python语言特点简介 以及在Windows以及Mac中安装以及配置的注意事项
正如前一篇随笔所提到的,python属于解释型语言 python语言有两个特点: 1.胶水语言(历史遗留问题,原来Perl语言作为Unix内置标准件,获得极大追捧,作为竞争者的python一开始是作为 ...
随机推荐
- 嵌入式Linux驱动学习之路(二十二)用内存模拟磁盘
安装驱动后,可在/dev/目录下发现已经生成了相应的设备文件. 格式化设备:mkdosfs /dev/ramblock. 挂载设备. 读写设备 . 驱动程序代码: /***************** ...
- Java的容器类Collection和Map
一,概念 JAVA集合只能存放引用类型的的数据,不能存放基本数据类型. java的容器类一共有两种主要类型,Colllection和Map. 两者的区别是:Collection是单个元素,而Map是存 ...
- LeetCode "448. Find All Numbers Disappeared in an Array"
My first reaction is to have an unlimited length of bit-array, to mark existence. But if no extra me ...
- jquery 里面对数组去重操作-unique
js: var yearArray = new Array(2009, 2009, 2010, 2010, 2009, 2010); $.unique(yearArray); alert(yearAr ...
- 学习C++.Primer.Plus 10 对象和类
1.类的声明和定义 类的声明和定义. 类声明的格式如下: class className { private://private 是类对象的默认访问控制,因此,可以省略 data member del ...
- 使用adb shell 进入手机修改文件的权限
1.将android的tools目录加入到path中,或者直接在adb.exe路径下启动cmd窗口2.adb shell 进入手机后,发现是 $ ,不是 # 号3.在进入shell后运行 su ,就可 ...
- CentOS 新增swap交换空间
在centos 6.4 64位系统中安装oracle 10g数据库软件,但由于交换空间过小导致检查不通过: 因此需要增加交换空间的大小. 第一步:在opt目录下新建swap交换文件,并设置其大小为2G ...
- asp.net MVC 通用登录验证模块
用法: 还是希望读者把源码看懂,即可运用自如.重点是,为什么有个UserType!!! 登录用户信息: namespace MVCCommonAuth { [Serializable] public ...
- 【转】解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介
ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦.为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一个.NET Core的东 ...
- [转]Struts2.3.16.1+Hibernate4.3.4+Spring4.0.2 框架整合
原文地址:http://blog.csdn.net/ycb1689/article/details/22928519 最新版Struts2+Hibernate+Spring整合 目前为止三大框架最新版 ...