Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Update built-in vim on Mac OS X

Tags:

vim

macos

I know this might be more appropriate at Ask Different, but as I tried adding tags there, there was no vim tag, only macvim. So I figured I might get a better audience here.

In the Terminal, I do the following

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

When I browse to http://www.vim.org, I see a news item

Vim 7.3 released!

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.)

I considered using Mercurial (as I already use it for other things), as per the instructions here.

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

But I think that would make a duplicate installation. Despite my "clean" requirement as mentioned above, "unclean" solutions are also welcome, since maybe there really is no other way.

like image 543
Kit Avatar asked Aug 27 '11 00:08

Kit


1 Answers

If I understand things correctly, you want to install over your existing Vim, for better or worse :-) This is a bad idea and it is not the "clean" way to do it. Why? Well, OS X expects that nothing will ever change in /usr/bin unbeknownst to it, so any time you overwrite stuff in there you risk breaking some intricate interdependency. And, Let's say you do break something -- there's no way to "undo" that damage. You will be sad and alone. You may have to reinstall OS X.

Part 1: A better idea

The "clean" way is to install in a separate place, and make the new binary higher priority in the $PATH. Here is how I recommend doing that:

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

See how clean this is.

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 SHOULD do.

Part 2: The "correct" answer (but a bad idea)

Assuming you're set on doing that, you are definitely on track. To install on top of your current installation, you need to set the "prefix" directory. That's done like this:

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 

You can pass "configure" a few other options too, if you want. Do "./configure --help" to see them. I hope you've got a backup before you do it, though, in case something goes wrong....

like image 125
Robert Martin Avatar answered Sep 20 '22 11:09

Robert Martin