Mac OS X'te yerleşik vim'i güncelleyin


112

Bunun Farklı Sor'da daha uygun olabileceğini biliyorum, ancak oraya etiket eklemeyi denediğim için vim, yalnızca etiket yoktu macvim. Bu yüzden burada daha iyi bir seyirci bulabileceğimi düşündüm.

Terminalde aşağıdakileri yapıyorum

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

Http://www.vim.org sitesine göz attığımda bir haber görüyorum

Vim 7.3 çıktı!

Yerleşik vim'imi nasıl güncellerim? Bunu temiz bir şekilde yapmayı çok isterim (yani yinelenen kurulumlar veya herhangi bir ek indirme, macport yok, vb.)

Buradaki talimatlara göre Mercurial kullanmayı düşündüm (zaten başka şeyler için kullandığım için) .

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

Ama bunun yinelenen bir kurulum olacağını düşünüyorum. Yukarıda belirtildiği gibi "temiz" gereksinimime rağmen, "kirli" çözümler de kabul edilir, çünkü gerçekten başka bir yol olmayabilir.


8
Genel olarak, Apple yüklü bitlerle uğraşmamak ve macports / homebrew / etc kullanmanın en iyisi olduğunu düşünüyorum. veya kendiniz inşa edin ve kurun /usr/local/. Fazla yer kaplayacak gibi değil.
steveax

github.com/b4winckler/macvim/releases <- en son macvim anlık görüntülerini buradan indirebilirsiniz
lfender6445

Yanıtlar:


119

Yerleşik Vim'in üzerine yazmayın.

Bunun yerine, kaynaktan farklı bir konuma veya Homebrew veya MacPorts aracılığıyla varsayılan konumlarına yükleyin ve ardından bu satırı .bashrc veya. Profilinize ekleyin:

alias vim='/path/to/your/own/vim'

ve / veya $PATHvarsayılan konumdan önce konumuna bakacak şekilde değiştirin .

Bence yapılacak en iyi şey, çok eksiksiz bir çalıştırılabilir vim ile birlikte gelen en son MacVim'i indirmek ve onu Terminal.app'de kullanmaktır.

alias vim='/Applications/MacVim.app/Contents/MacOS/Vim' # or something like that, YMMV

3
Mac OS X 10.8.2'de, yol biraz farklıdır:/Applications/MacVim.app/Contents/MacOS/Vim
zakangelle

2
Hayır, her Mac OS X sürümünde aynıdır. Az önce bir yazım hatası yaptım. Teşekkürler.
romainl

@ fabian789: Birincisi işe yaramadığı için, ikincisi yumuşak zordan daha iyi olduğu için, üçü varsayılan Vim çalışıyor ve bir şeyler ters giderse artık çalışan bir Vim'iniz olmayabilir, dördü sistem yükseltmesi Vim'inizin üzerine yazabilir ve liste muhtemelen devam et…
romainl

2
... veya alias vim='mvim -v'. Ancak bunların ikisi sudo vimde eski sürümü kullanırken başarısız olur . @ RobertMartin'in cevabını veya bir paket yöneticisini kullanmanızı öneririm. Ayrıca bir seçenek daha var: serverfault.com'da Slizzered tarafından verilen bu cevap , takma adları geçirmenize izin veriyor sudo.
Brian McCutchon

"Takma adlar, etkileşimli bir kabuk için kısayollardır; diğer işlemler tarafından kullanılmazlar" diyor bu yanıt. stackoverflow.com/questions/37466767/… Bu nedenle, bu git difftoolya da için çalışmaz git commit.
jasonszhao

130

Her şeyi doğru anlarsam, daha iyi veya daha kötüsü için mevcut Vim'inize yüklemek istersiniz :-) Bu kötü bir fikir ve bunu yapmanın "temiz" yolu değil. Neden? OS X, / usr / bin içindeki hiçbir şeyin habersizce değişmeyeceğini umuyor, bu yüzden oradaki bir şeyin üzerine yazdığınız her seferinde karmaşık karşılıklı bağımlılığı kırma riskiniz var. Ve bir şeyi kırdığınızı varsayalım - bu hasarı "geri almanın" bir yolu yoktur. Üzgün ​​ve yalnız olacaksın. OS X'i yeniden yüklemeniz gerekebilir.

Bölüm 1: Daha iyi bir fikir

"Temiz" yol, ayrı bir yere kurmak ve yeni ikiliyi $ PATH içinde daha yüksek öncelik haline getirmektir. Bunu şu şekilde yapmanızı tavsiye ederim:

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

İşte bu kadar! Şimdi vim'i kullandığımızda yenisini kullanıyor olacağız. Ancak, çok büyük s * kipler durumunda eski yapılandırmamıza geri dönmek için, / opt dizinini silebiliriz.

$ 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

Bunun ne kadar temiz olduğunu görün.

/ Usr / bin içindeki ikilileri geçersiz kılmak istediğinizde / usr / local / bin içine yüklememenizi tavsiye ederim, çünkü varsayılan olarak OS X / usr / bin $ PATH'a / usr / local / bin'den daha yüksek öncelik koyar ve o ne olduğunu .... Yani solucanlar kendi teneke açılır GEREKEN yapmak.

2. Bölüm: "Doğru" yanıt (ancak kötü bir fikir)

Bunu yapmaya hazır olduğunuzu varsayarsak, kesinlikle yoldasınız. Mevcut kurulumunuzun üzerine kurmak için "önek" dizinini ayarlamanız gerekir. Bu şu şekilde yapılır:

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

İsterseniz diğer birkaç seçeneği de "yapılandır" olarak geçirebilirsiniz. Bunları görmek için "./configure --help" yapın. Umarım bir şeyler ters giderse diye yapmadan önce bir yedeğiniz vardır ...


Hmm ... Bunu artırmalı mıyım bilmiyorum ... Soruyu cevaplıyor ... Ama bu kötü bir fikir ve nedenini açıklamıyor ... Yani belki de eksi oy vermeliyim?
Arafangion

Harika cevap, ama * nix acemi olarak neden vim'i kurmak için ~ 'a gitmeyi seçtiğinizi merak ediyorum. Ayrıca, bu ./configure ... satırı ne yapar? Tekrar teşekkürler.
AlexMA

@AlexMA Kaynağı ~, yani ana dizininizi koymak tamamen keyfidir. İstediğiniz yere indirmekten çekinmeyin. Bir kez kurduktan sonra dizini de silebilirsiniz (o noktada kaynak artık gerekli değildir).
Robert Martin

3
Bir ipucu için çok teşekkürler! Python, PERL ve Ruby desteği için yapılandırmanızı şu şekilde ayarladım./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

Bunun bir yazım hatası olduğunu düşünüyorum "!. Biz Vim kullandığınızda Voila Şimdi eski kullanarak olacak" ve "Kullanacağımız demek istedi yeni bir"
Skullkid

55

Eric gibi ben de homebrew kullandım ama varsayılan tarifi kullandım. Yani:

brew install mercurial
brew install vim

Ve terminal homebrew's vim'i yeniden başlattıktan sonra varsayılan değer olmalıdır. Değilse, sizin güncellemeniz gerekmektedir $PATHSo /usr/local/binöncedir /usr/bin. Örneğin, aşağıdakileri ekleyin .profile:

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

6
@Beau Bu doğru değil, homebrew'in vim için bir formülü var: github.com/mxcl/homebrew/blob/master/Library/Formula/vim.rb
Koen.

Özür dilerim benim hatam! A brew updategerçekten bana vim için bir formül verdi.
Beau

vi[sudo] ln -sf /usr/local/bin/vim /usr/bin/vi
Sembolik bağlantıları

Benim eklendi viiçin sembolik /usr/local/bin:ln -s /usr/local/bin/vim /usr/local/bin/vi
wisbucky

"Ve terminal homebrew'in vim'ini yeniden başlattıktan sonra" aniden bana çarptı - yeni vim'in çalışması için onu kapatıp tekrar açmam gerekiyor. Teşekkürler dostum
Peter Perháč

7

Romainl'in cevabına bir not: takma adlar sudo ile birlikte çalışmaz çünkü takma adlarda yalnızca ilk kelime kontrol edilir. Bunu değiştirmek için .profile / .bashrc dosyanıza başka bir takma ad ekleyin:

alias sudo='sudo '

Bu değişiklikle sudo vimbeklendiği gibi davranacak!


6

Yosemite'de brewve override-system-viseçeneğini kullanarak vim'i kurun . Bu, 'devasa' vim kurulumunun özellikleriyle vim'i otomatik olarak kuracaktır.

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

Bu komutun çıktısı size brew'in nerede kurulu olduğunu gösterecektir. Bu klasörde, /bin/vimvim'i gerçekten çalıştırmak için aşağıya gidin . Bu, herhangi bir klasörden vim'i çalıştırmak için komutunuz:

/usr/local/Cellar/vim/7.4.873/bin/vim

Daha sonra .bashrc dosyanıza aşağıdaki satırı ekleyerek bu komutu takma ad verin:

alias vim="/usr/local/Cellar/vim/7.4.873/bin/vim"

DÜZENLEME: Brew bayrağı --override-system-vikullanımdan kaldırıldı. İçin değiştirildi --with-override-system-vi. Kaynak: https://github.com/Shougo/neocomplete.vim/issues/401


1
bunun gibi, vim'i her güncellediğinizde takma adı güncellemeniz gerekir. Ayrıca, vim ikiliyi / usr / local / bin dizinine otomatik olarak eklediğinden, tam konumu bir takma ad olarak eklemek gerekli değildir.
Flaudre

Brew bayrağı --override-system-viartık kullanımdan kaldırıldı. --with-override-system-viİnsted kullanın .
alhuelamo

@ahuelamo Bir kaynağınız var mı? Öyleyse, düzenlemekten ve kaynak yazmaktan çekinmeyin. Teşekkürler
Özel

@Private Well, bunu demlemek tarafından önerildi. Bunu burada da bulabilirsiniz github.com/Shougo/neocomplete.vim/issues/401
alhuelamo

Takma ad eklemek, geçersiz kılma bayrağı kullanılırken gereksizdir.
apostl3pol

1

brew install vim --override-system-vi


1
Bu komutun neden çalıştırılması gerektiğine dair hiçbir açıklama veya referans vermez.
ngfgrant

1

Bu blog yazısı benim için yardımcı oldu. "Homebrew inşa Vim" çözümünü kullandım, bu benim durumumda yeni sürümü / usr / local / bin içine kaydetti. Bu noktada, gönderi benim için çalışmayan sistem vim'inin gizlenmesini önerdi, bu yüzden onun yerine bir takma ad kullandım.

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

1
İlginç. Bunu denedim ama demlemek yolu otomatik olarak değiştirmiş olmalı. Arama Açıklama vim(Yeni Terminal açtıktan sonra) yeni vim açmak gibiydi
Dylanthepiguy

1
@Dylanthepiguy kabul etti, homebrew kullanıyorsanız burada bir takma ad oluşturmanıza gerek yok. Hem yeni bir kabuk başlatmak hem de mevcut terminalde bashrc'mi yeniden kaynaklamak, vim komutunu yeni homebrew sürümüne güncellemek için çalıştı.
kjones

1

Vim'i şu şekilde yükledim:

brew install vim

şimdi yeni vim'e erişilir vimve eski vim'e (yerleşik vim)vi

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.