Оновіть вбудований vim на Mac OS X


112

Я знаю, що це може бути більш доречним у 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? Я дуже хотів би зробити це чисто (тобто відсутність дублікатів, будь-які додаткові завантаження, ніякі макпорти тощо)

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

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

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


8
Взагалі, я думаю, що краще не спілкуватися з встановленими бітами Apple і використовувати macports / homebrew / тощо. або створити його самостійно та встановити /usr/local/. Не так, як це займе багато місця.
steveax

github.com/b4winckler/macvim/releases <- найновіші знімки macvim можна завантажити тут
lfender6445

Відповіді:


119

Не перезаписуйте вбудований 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

3
На Mac OS X 10.8.2 шлях дещо інший:/Applications/MacVim.app/Contents/MacOS/Vim
zakangelle

2
Ні, це однаково у всіх версіях Mac OS X. Я щойно зробив друк. Дякую.
romainl

@ fabian789: Спочатку тому, що він марний, два тому, що м'який краще, ніж важкий, три тому, що Vim працює за замовчуванням, і якщо щось піде не так, ви, можливо, більше не матимете працюючого Vim, чотири оновлення системи можуть перезаписати ваш Vim, і список, можливо, міг продовжуй і далі…
romainl

2
... або alias vim='mvim -v'. Але обидва вони не вдається sudo vimвикористовувати стару версію. Я б запропонував використовувати відповідь @ RobertMartin або менеджер пакунків. Там також один інший варіант: ця відповідь на Slizzered на serverfault.com, який дозволяє передавати псевдоніми sudo.
Брайан Маккотчон

"Псевдоніми - це ярлики для інтерактивної оболонки; вони не використовуються іншими процесами", - йдеться у цій відповіді. stackoverflow.com/questions/37466767/… Тому це не працює, скажімо, git difftoolабо git commit.
jasonszhao

130

Якщо я правильно все розумію, ви хочете встановити його на існуючий 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: "Правильна" відповідь (але погана ідея)

Якщо припустити, що ви це зробите, ви точно на шляху. Щоб встановити поверх поточної установки, вам потрібно встановити каталог "префікс". Це робиться так:

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", щоб побачити їх. Я сподіваюся, що у вас є резервна копія, перш ніж це зробити, хоча, якщо щось піде не так ...


Хм ... я не знаю, чи варто було б схвалити це ... Це відповідає на питання ... Але це погана ідея і не пояснює, чому ... Тож, можливо, я повинен це спростувати?
Арафангіон

Чудова відповідь, але як початківця * nix мені цікаво, чому ви обрали ~ для встановлення vim. Крім того, що це робить ./configure ... рядок? Знову дякую.
AlexMA

@AlexMA Введення джерела ~, тобто вашого домашнього каталогу, є абсолютно довільним. Не соромтесь завантажувати його куди завгодно. Після того як ви встановите його, ви також можете видалити каталог (джерело вже не потрібно в цьому пункті).
Роберт Мартін

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
Ain Tohvri

"Voila! Тепер, коли ми будемо використовувати vim, ми будемо використовувати старий". Я думаю, що це помилка друку, і ви мали намір сказати "ми будемо використовувати нову "
skullkid

55

Як і Ерік, я використовував домашню капусту, але використовував рецепт за замовчуванням. Так:

brew install mercurial
brew install vim

А після перезавантаження терміналу vim homebrew повинен бути типовим. Якщо ні, то слід оновити $PATHтак, як /usr/local/binце було раніше /usr/bin. Наприклад, додайте у своє .profile:

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

6
@Beau Це невірно, у домашньої мови є формула для vim: github.com/mxcl/homebrew/blob/master/Library/Formula/vim.rb
Koen.

Вибачте, моя провина! A brew updateдійсно повернув мені формулу vim.
Beau

Виправити viсимвольні посилання:[sudo] ln -sf /usr/local/bin/vim /usr/bin/vi
knight9631

Я додав своє viпосилання на /usr/local/bin:ln -s /usr/local/bin/vim /usr/local/bin/vi
wisbucky

"І після перезавантаження vim терміналу homebrew", це раптом мене вразило - мені потрібно вимкнути його і знову ввімкнути, щоб новий vim працював. Людина подяки
Петро Перхач

7

Примітка до відповіді romainl: псевдоніми не працюють разом із судо, оскільки на псевдонімах перевіряється лише перше слово. Щоб змінити це, додайте інший псевдонім у свій .profile / .bashrc:

alias sudo='sudo '

З цією зміною sudo vimбуде вести себе як очікувалося!


6

На Yosemite встановіть vim за допомогою brewта override-system-viопцію. Це автоматично встановить vim з особливостями "величезної" установки vim .

brew install vim --with-override-system-vi

Вихід цієї команди покаже вам, де заварено встановлений 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: Прапор --override-system-viпивоварення застарілий. Змінено на --with-override-system-vi. Джерело: https://github.com/Shougo/neocomplete.vim/isissue/401


1
як це, ви повинні оновлювати псевдонім кожного разу, коли ви оновлюєте vim. Крім того, не потрібно додавати точне місце як псевдонім, оскільки vim автоматично додає двійковий код в / usr / local / bin.
Флод

Пивоварний прапор --override-system-viтепер застарілий. Використовуйте --with-override-system-viinsted.
alhuelamo

@ahuelamo У вас є джерело? Якщо так, не соромтесь редагувати та надсилати джерело. Спасибі
Приват

@Private Добре, що підказала сама заварка. Ви можете знайти його і тут github.com/Shougo/neocomplete.vim/isissue/401
alhuelamo

Додавання псевдоніма зайве при використанні прапора переопределення.
apostl3pol

1

brew install vim --override-system-vi


1
Не дає опису чи посилання на те, чому слід запускати цю команду.
ngfgrant

1

Ця публікація для мене була корисною для мене. Я скористався рішенням, створеним Vim, створеним Homebrew, яке в моєму випадку зберегло нову версію в / usr / local / bin. У цей момент публікація запропонувала приховати системний vim, який не працював для мене, тому я використав псевдонім.

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

1
Цікаво. Я спробував це, але пивоваріння, мабуть, замінило шлях автоматично. vimЗдавалося, що виклик відкрив новий vim (після відкриття нового терміналу)
Dylanthepiguy

1
@Dylanthepiguy погодився, тут не потрібно створювати псевдонім, якщо використовується домашня мова. І запуск нової оболонки, і повторний пошук мого bashrc в існуючому терміналі працювали над оновленням команди vim на нову версію домашньої версії.
kjones

1

Щойно я встановив vim:

brew install vim

тепер доступ до нового vim має доступ, vimа старий vim (вбудований vim) відvi

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.