Обновление встроенного vim на Mac OS X - PullRequest
108 голосов
/ 27 августа 2011

Я знаю, что это может быть более уместно в 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

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

Ответы [ 8 ]

124 голосов
/ 27 августа 2011

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

Вуаля!Теперь, когда мы используем 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: "правильный" ответ (но плохая идея)

Предполагая, чтоты настроен на это, ты определенно на пути.Чтобы установить поверх текущей установки, вам необходимо установить каталог «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 --help", чтобы увидеть их.Я надеюсь, что у вас есть резервная копия, прежде чем вы сделаете это, на случай, если что-то пойдет не так ...

118 голосов
/ 27 августа 2011

Не перезаписывать встроенный 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
51 голосов
/ 25 января 2013

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

brew install mercurial
brew install vim

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

export PATH=/usr/local/bin:$PATH
7 голосов
/ 15 ноября 2011

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

alias sudo='sudo '

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

6 голосов
/ 10 декабря 2015

На Yosemite установите vim, используя brew и параметр override-system-vi.Это автоматически установит vim с функциями 'огромного' vim install.

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 flag --override-system-viбыл объявлен устаревшимИзменено на --with-override-system-vi.Источник: https://github.com/Shougo/neocomplete.vim/issues/401

1 голос
/ 30 апреля 2016

Этот пост был полезен для меня.Я использовал решение "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
1 голос
/ 18 сентября 2015

brew install vim --override-system-vi

0 голосов
/ 24 октября 2018

Я только что установил vim по:

brew install vim

теперь новый vim доступен vim, а старый vim (встроенный vim) - vi

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...