Обновление встроенного vim в Mac OS X

Я знаю, что это может быть более уместно в Ask Different, но поскольку я пытался добавлять теги там, не было тега 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 выпущен!

Как обновить встроенный vim? Я бы очень хотел сделать это чисто (т.е. Не дублировать установки или каких-либо дополнительных загрузок, нет macports и т.д.)

Я рассматривал использование Mercurial (поскольку я уже использовал его для других вещей), в соответствии с инструкциями здесь.

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

Но я думаю, что это сделает дубликат установки. Несмотря на мое "чистое" требование, как упоминалось выше, "нечистые" решения также приветствуются, поскольку, возможно, другого способа не существует.

Ответ 1

Не перезаписывайте встроенный Vim.

Вместо этого установите его из источника в другом месте или через Homebrew или 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

Ответ 2

Если я правильно понимаю, вы хотите установить поверх своего существующего 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

Voila! Теперь, когда мы используем 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

Посмотрите, насколько это чисто.

Я рекомендую не устанавливать в /usr/local/bin, если вы хотите переопределить двоичные файлы в /usr/bin, потому что по умолчанию OS X ставит /usr/bin более высокий приоритет в $PATH, чем /usr/local/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

Если вы захотите, вы можете передать "configure" еще несколько вариантов. Сделайте "./configure --help", чтобы увидеть их. Надеюсь, у вас есть резервная копия, прежде чем вы это сделаете, если на что-то пойдет не так....

Ответ 3

Как и Эрик, я использовал доморощенный, но я использовал рецепт по умолчанию. Итак:

brew install mercurial
brew install vim

И после перезапуска терминала homebrew vim должен быть по умолчанию. Если нет, вы должны обновить свой $PATH, чтобы /usr/local/bin был до /usr/bin. Например. добавьте следующее в .profile:

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

Ответ 4

Примечание для ответа romainl: псевдонимы не работают вместе с sudo, потому что только одно слово проверяется на псевдонимах. Чтобы изменить это, добавьте еще один псевдоним в ваш .profile/.bashrc:

alias sudo='sudo '

С этим изменением sudo vim будет вести себя так, как ожидалось!

Ответ 5

В Yosemite установите vim с помощью brew и override-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"

EDIT: флаг brew --override-system-vi устарел. Изменено для --with-override-system-vi. Источник: https://github.com/Shougo/neocomplete.vim/issues/401

Ответ 6

brew install vim --override-system-vi

Ответ 7

Это сообщение в блоге было полезно для меня. Я использовал решение "Homebrew built Vim", которое в моем случае сохранила новую версию в /usr/local/bin. На этом этапе сообщение предложило скрывать систему vim, которая не работала для меня, поэтому я использовал вместо нее псевдоним.

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