在Mac OS X上更新内置的vim

我知道这可能更适合在Ask Different,但是当我尝试在那里添加标签时,没有vim标签,只有macvim 。 所以我想我可能在这里得到更好的观众。

在terminal,我做了以下

 $ vim --version VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Jan 31 2010 13:33:49) 

当我浏览http://www.vim.org时 ,我看到一个新闻项目

Vim 7.3发布!

如何更新我的内置vim? 我非常想干净地做(即没有重复的安装,或任何额外的下载,没有macports等)

我考虑使用Mercurial(因为我已经用它来做其他事情),按照这里的说明。

 $ hg clone https://vim.googlecode.com.hg/ vim $ cd vim/src $ make 

但是我认为这样会造成重复的安装。 尽pipe如上所述,我的“干净”的要求,也是受欢迎的“不洁净”的解决scheme,因为也许真的没有其他的办法。

不要覆盖内置的Vim。

相反,从源安装在不同的位置,或通过自制软件或MacPorts默认位置,然后将此行添加到您的.bashrc或.profile:

 alias vim='/path/to/your/own/vim' 

和/或更改您的$PATH以便它在默认位置之前查看它的位置。

在我看来,最好的做法是简单地下载最新的MacVim,它带有一个非常完整的vim可执行文件,然后像Terminal.app一样使用它。

 alias vim='/Applications/MacVim.app/Contents/MacOS/Vim' # or something like that, YMMV 

如果我正确地理解了一些东西,那么你想在现有的Vim上进行安装,不pipe是好还是坏:-)这是一个坏主意 ,而不是“干净”的方式。 为什么? 那么,OS X希望在/ usr / bin中不会有任何变化,所以无论什么时候改写它们,都有可能破坏一些错综复杂的相互依赖关系。 而且,假设你破坏了某些东西 – 没有办法“破坏”这种破坏。 你会伤心,孤独。 您可能需要重新安装OS X.

第1部分:一个更好的主意

“干净”的方式是安装在一个单独的地方,并使$ PATH中的新二进制更高的优先级。 这是我build议如何做的:

 $ # Create the directories you need $ sudo mkdir -p /opt/local/bin $ # Download, compile, and install the latest Vim $ cd ~ $ hg clone https://bitbucket.org/vim-mirror/vim or git clone https://github.com/vim/vim.git $ $ cd vim $ ./configure --prefix=/opt/local $ make $ sudo make install $ # Add the binary to your path, ahead of /usr/bin $ echo 'PATH=/opt/local/bin:$PATH' >> ~/.bash_profile $ # Reload bash_profile so the changes take effect in this window $ source ~/.bash_profile 

瞧! 现在,当我们使用vim时,我们将使用旧版本。 但是,为了在发生巨大的f * ckups的情况下恢复到旧的configuration,我们可以删除/ opt目录。

 $ which vim /opt/local/bin/vim $ vim --version | head -n 2 VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Aug 27 2011 20:55:46) MacOS X (unix) version 

看看这是多么的干净。

当你想在/ usr / bin中覆盖二进制文件时,我build议不要在/ usr / local / bin中安装,因为默认情况下,OS X比/ usr / local / bin在/ PATH中放置/ usr / bin更高的优先级,打开它自己的蠕虫….所以,这就是你应该做的。

第2部分:“正确”的答案(但一个坏主意)

假设你已经这么做了,那么你肯定会走上正轨。 要安装在当前安装之上,您需要设置“前缀”目录。 这样做是这样的:

 hg clone https://bitbucket.org/vim-mirror/vim or git clone https://github.com/vim/vim.git cd vim ./configure --prefix=/usr make sudo make install 

如果你愿意,你也可以通过“configuration”一些其他选项。 做“./configure –help”来看看他们。 尽pipe如此,我希望你在做之前已经有了一个备份,以防出现问题。

像Eric一样,我使用自制软件,但是我使用了默认配方。 所以:

 brew install mercurial brew install vim 

重启后terminal自制软件的vim应该是默认的。 如果不是,则应更新$PATH以便/usr/local/bin/usr/bin之前。 例如,将以下内容添加到.profile

 export PATH=/usr/local/bin:$PATH 

romainl的答案注释:别名与sudo不能一起工作,因为只有第一个字被检查别名。 要改变这个添加别名到你的.profile / .bashrc:

alias sudo='sudo '

有了这个变化, sudo vim会像预期的那样行事!

在优胜美地上,使用brewoverride-system-vi选项安装vim。 这将自动安装vim与“巨大的”vim安装的function。

 brew install vim --with-override-system-vi 

这个命令的输出会告诉你brew在哪里安装vim。 在该文件夹中,进入/bin/vim来实际运行vim。 这是你从任何文件夹运行vim的命令:

 /usr/local/Cellar/vim/7.4.873/bin/vim 

然后通过在.bashrc中添加以下行来替代此命令:

 alias vim="/usr/local/Cellar/vim/7.4.873/bin/vim" 

编辑:Brew标志--override-system-vi已被弃用。 更改为--with-override-system-vi 。 来源: https : //github.com/Shougo/neocomplete.vim/issues/401

brew install vim --override-system-vi

这个博客文章对我很有帮助。 我用“自制的Vim”解决scheme,在我的情况下把新版本保存在/ usr / local / bin中。 在这一点上,这个postbuild议隐藏系统vim,这对我不起作用,所以我使用了别名。

 $ brew install vim $ alias vim='/path/to/new/vim $ which vim vim: aliased to /path/to/new/vim