在 Mac OS X 上更新内置的 vim

我知道这可能是更合适的询问不同,但因为我试图添加标记有,没有 vim标记,只有 macvim。所以我觉得我可能会有更好的观众。

在终端机中,我执行以下操作

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

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

Vim 7.3发布!

How do I update my built-in vim? I would very much like to do it cleanly (i.e. no duplicate installations, or any additional downloads, no macports, etc.)

我考虑使用 Mercurial (因为我已经将它用于其他用途) ,按照说明 给你

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

但我觉得那样会造成重复安装。尽管我的“清洁”要求如上所述,“不清洁”的解决方案也是受欢迎的,因为也许真的没有其他办法。

112934 次浏览

如果我理解正确,你想安装在你现有的 Vim,无论好坏: ——)这是一个 坏主意,它是 不是“干净”的方式。为什么?OS X 希望在它不知道的情况下,/usr/bin 中的任何内容都不会发生变化,所以任何时候你在其中覆盖内容都有可能打破某些错综复杂的相互依赖关系。而且,假设你确实打破了什么东西——没有办法“撤销”这种损害。你会很伤心,很孤独。您可能需要重新安装 OS X。

第一部分: 更好的主意

“干净”的方法是安装在一个单独的位置,并使新的二进制文件在 $PATH 中具有更高的优先级。下面是我的建议:

$ # 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

Voila! Now when we use vim we will be using the new one. But, to get back to our old configuration in the event of huge f*ckups, we can just delete the /opt directory.

$ 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

看看这里有多干净。

I recommend not to install in /usr/local/bin when you want to override binaries in /usr/bin, because by default OS X puts /usr/bin higher priority in $PATH than /usr/local/bin, and screwing with that opens its own can of worms.... So, that's what you 应该 do.

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

假设你决定这么做,那么你肯定走上正轨了。要在当前安装之上安装,需要设置“ prefix”目录。就像这样:

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

如果需要,还可以传递“ configure”其他一些选项。做”。/configure —— help”查看它们。我希望你在做之前有备份,以防万一。

Don't overwrite the built-in Vim.

相反,从源安装它在一个不同的位置或通过家酿或 MacPorts 在他们的默认位置,然后添加这一行到您的。巴希尔或者。简介:

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

Romainl 回答的一个注意事项: 别名不能与 sudo 一起工作,因为只有第一个单词在别名上被检查。若要更改此属性,请将另一个别名添加到。个人资料/。巴希尔:

alias sudo='sudo '

有了这个变化,sudo vim将表现得和预期的一样!

和埃里克一样,我用的是自制的,但是我用的是默认的配方。所以:

brew install mercurial
brew install vim

重新启动后,终端自制程序的 vim 应该是默认值。如果没有,你应该更新你的 $PATH,使 /opt/homebrew/bin/usr/bin之前。例如,在你的 .profile中加入以下内容:

export PATH=/opt/homebrew/bin:$PATH

注意: 以前版本的家酿确实安装到了 /usr/local,所以在这种情况下,您必须使用 /usr/local/bin而不是 /opt/homebrew/bin

brew install vim --override-system-vi

在 Yosemite 上,使用 brewoverride-system-vi选项安装 vim。这将自动安装具有 “巨大的”活力安装特性的 vim。

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"

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

我刚刚安装了 vim:

brew install vim

现在,vim访问新的 vim,vi访问旧的 vim (内置 vim)