在Mac OS X上更新内置vim

Kit*_*Kit 110 macos vim

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

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

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

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

Vim 7.3发布了!

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

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

$ hg clone https://vim.googlecode.com.hg/ vim
$ cd vim/src
$ make
Run Code Online (Sandbox Code Playgroud)

但我认为这将使重复安装.尽管如上所述我的"干净"要求,"不干净"的解决方案也是受欢迎的,因为也许真的没有别的办法.

Rob*_*tin 126

如果我理解正确,你想安装现有的Vim,无论好坏:-)这是一个坏主意,并不是"干净"的方式.为什么?好吧,OS X希望在/ usr/bin中不会发生任何变化,因此无论何时你覆盖那里的东西你都有可能破坏一些错综复杂的相互依赖性.并且,假设你确实破坏了某些东西 - 没有办法"撤消"那种伤害.你会伤心孤独.您可能必须重新安装OS X.

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

"干净"的方法是在一个单独的地方安装,并在$ 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
Run Code Online (Sandbox Code Playgroud)

瞧!现在当我们使用vim时,我们将使用新的.但是,要在巨大的f*ckups的情况下回到我们的旧配置,我们可以删除/ 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
Run Code Online (Sandbox Code Playgroud)

看看它有多干净.

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

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

假设你已经开始这么做了,你肯定会走上正轨.要在当前安装的基础上安装,需要设置"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
Run Code Online (Sandbox Code Playgroud)

如果需要,您也可以传递"配置"其他一些选项.做"./configure --help"来看看它们.我希望你在做之前有一个备份,但是,如果出现问题......

  • 好点子.我会使警告更加可怕. (3认同)
  • 非常感谢小费!我确实将你的Python,PERL和Ruby支持的配置调整为`./configure --prefix/opt/local --enable-perlinterp = yes --enable-pythoninterp = yes --enable-rubyinterp = yes --with-features = huge --with-python-config-dir =/System/Library/Frameworks/Python.framework/Versions/2.7` (3认同)

rom*_*inl 119

不要覆盖内置的Vim.

而是从源代码安装在不同的位置,或者通过Homebrew或MacPorts在默认位置安装,然后将此行添加到.bashrc或.profile:

alias vim='/path/to/your/own/vim'
Run Code Online (Sandbox Code Playgroud)

和/或更改您$PATH的位置,使其在默认位置之前查看其位置.

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

alias vim='/Applications/MacVim.app/Contents/MacOS/Vim' # or something like that, YMMV
Run Code Online (Sandbox Code Playgroud)

  • 为什么建议不要覆盖内置的Vim?只是好奇... (4认同)
  • 在Mac OS X 10.8.2上,路径略有不同:`/ Applications/MacVim.app/Contents/MacOS/Vim` (3认同)
  • 不,在每个Mac OS X版本上都是一样的.我刚做了一个错字.谢谢. (2认同)
  • ...或'别名vim ='mvim -v'`.但是这两个都使用旧版本的`sudo vim`失败了.我建议使用@ RobertMartin的答案或包经理.还有一个选项:[此答案](http://serverfault.com/a/178956),来自[Slizzered](http://serverfault.com/users/53621/slizzered),在serverfault.com上,它允许你将别名传递给`sudo`. (2认同)

Koe*_*en. 52

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

brew install mercurial
brew install vim
Run Code Online (Sandbox Code Playgroud)

重启后终端自制软件的vim应该是默认值.如果没有,你应该更新$PATH,以便/usr/local/bin为之前/usr/bin.例如,将以下内容添加到您的.profile:

export PATH=/usr/local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

  • @Beau这不正确,自制软件确实有一个vim的公式:https://github.com/mxcl/homebrew/blob/master/Library/Formula/vim.rb (6认同)

jay*_*eff 7

对romainl的回答的注释:别名不能与sudo一起使用,因为只检查别名上的第一个单词.要更改此项,请在.profile/.bashrc中添加另一个别名:

alias sudo='sudo '

通过此更改sudo vim将按预期运行!


Pri*_*ate 6

在Yosemite上,使用brew和override-system-vi选项安装vim .这将自动安装具有'巨大'vim安装功能的vim.

brew install vim --with-override-system-vi
Run Code Online (Sandbox Code Playgroud)

此命令的输出将显示brew安装vim的位置.在该文件夹中,进入/bin/vim实际运行vim.这是从任何文件夹运行vim的命令:

/usr/local/Cellar/vim/7.4.873/bin/vim
Run Code Online (Sandbox Code Playgroud)

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

alias vim="/usr/local/Cellar/vim/7.4.873/bin/vim"
Run Code Online (Sandbox Code Playgroud)

编辑:Brew标志--override-system-vi已被弃用.换了--with-override-system-vi.资料来源:https://github.com/Shougo/neocomplete.vim/issues/401