Perbarui vim bawaan di Mac OS X

112

Saya tahu ini mungkin lebih sesuai di Ask Different, tetapi ketika saya mencoba menambahkan tag di sana, tidak ada vimtag, hanya macvim. Jadi saya pikir saya bisa mendapatkan penonton yang lebih baik di sini.

Di Terminal, saya melakukan hal berikut

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

Ketika saya menelusuri http://www.vim.org , saya melihat item berita

Vim 7.3 dirilis!

Bagaimana cara memperbarui vim built-in saya? Saya sangat ingin melakukannya dengan bersih (yaitu tidak ada instalasi duplikat, atau unduhan tambahan apa pun, tidak ada macports, dll.)

Saya mempertimbangkan untuk menggunakan Mercurial (karena saya sudah menggunakannya untuk hal-hal lain), sesuai instruksi di sini .

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

Tapi saya pikir itu akan membuat instalasi duplikat. Meskipun saya membutuhkan "bersih" seperti yang disebutkan di atas, solusi "tidak bersih" juga diterima, karena mungkin memang tidak ada cara lain.

Kit
sumber
8
Secara umum saya pikir yang terbaik adalah tidak membuang-buang bit yang diinstal Apple dan menggunakan macports / homebrew / etc. atau buat sendiri dan pasang di /usr/local/. Tidak seperti itu akan memakan banyak tempat.
steveax
github.com/b4winckler/macvim/releases <- Anda dapat mengunduh snapshot macvim terbaru di sini
lfender6445

Jawaban:

119

Jangan menimpa Vim bawaan.

Sebagai gantinya, instal dari sumber di lokasi yang berbeda atau melalui Homebrew atau MacPorts di lokasi default mereka lalu tambahkan baris ini ke .bashrc atau .profile Anda:

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

dan / atau ubah Anda $PATHsehingga terlihat ke lokasinya sebelum lokasi default.

Hal terbaik untuk dilakukan, menurut pendapat saya, adalah dengan mengunduh MacVim terbaru yang hadir dengan vim yang sangat lengkap yang dapat dieksekusi dan menggunakannya di Terminal.app seperti itu.

alias vim='/Applications/MacVim.app/Contents/MacOS/Vim' # or something like that, YMMV
romainl
sumber
3
Di Mac OS X 10.8.2, jalurnya sedikit berbeda:/Applications/MacVim.app/Contents/MacOS/Vim
zakangelle
2
Tidak, itu sama di setiap versi Mac OS X. Saya baru saja salah ketik. Terima kasih.
romainl
@ fabian789: Pertama karena tidak berguna, dua karena lunak lebih baik daripada keras, tiga karena Vim default berfungsi dan jika terjadi kesalahan, Anda mungkin tidak memiliki Vim yang berfungsi lagi, empat peningkatan sistem dapat menimpa Vim Anda dan daftar mungkin bisa terus dan terus…
romainl
2
... atau alias vim='mvim -v'. Namun keduanya gagal dengan sudo vimmenggunakan versi lama. Saya akan menyarankan menggunakan jawaban @ RobertMartin atau manajer paket. Ada juga satu opsi lain: jawaban ini dari Slizzered di serverfault.com, yang memungkinkan Anda untuk mengirimkan alias ke sudo.
Brian McCutchon
"Alias ​​adalah pintasan untuk shell interaktif; mereka tidak digunakan oleh proses lain," kata jawaban ini. stackoverflow.com/questions/37466767/… Oleh karena itu, ini tidak berfungsi untuk, katakanlah git difftoolatau git commit.
jasonszhao
130

Jika saya memahami sesuatu dengan benar, Anda ingin menginstal Vim yang ada, baik atau buruk :-) Ini adalah ide yang buruk dan ini bukan cara yang "bersih" untuk melakukannya. Mengapa? Nah, OS X mengharapkan bahwa tidak ada yang akan berubah di / usr / bin tanpa sepengetahuannya, jadi setiap kali Anda menimpa barang-barang di sana, Anda berisiko merusak beberapa ketergantungan yang rumit. Dan, Katakanlah Anda memang merusak sesuatu - tidak ada cara untuk "memperbaiki" kerusakan itu. Anda akan sedih dan sendirian. Anda mungkin harus menginstal ulang OS X.

Bagian 1: Ide yang lebih baik

Cara "bersih" adalah menginstal di tempat terpisah, dan membuat prioritas biner baru yang lebih tinggi di $ PATH. Berikut adalah cara saya merekomendasikan melakukan itu:

$ # 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! Sekarang ketika kita menggunakan vim kita akan menggunakan yang baru. Tapi, untuk kembali ke konfigurasi lama kita jika terjadi f * ckups besar, kita cukup menghapus direktori / 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

Lihat betapa bersihnya ini.

Saya merekomendasikan untuk tidak menginstal di / usr / local / bin ketika Anda ingin mengganti binari di / usr / bin, karena secara default OS X menempatkan / usr / bin prioritas lebih tinggi di $ PATH daripada / usr / local / bin, dan mengacaukan yang membuka kaleng wormnya sendiri .... Jadi, itulah yang HARUS Anda lakukan.

Bagian 2: Jawaban yang "benar" (tapi ide yang buruk)

Dengan asumsi Anda siap melakukan itu, Anda pasti berada di jalur yang benar. Untuk menginstal di atas instalasi Anda saat ini, Anda perlu menyetel direktori "prefix". Itu dilakukan seperti ini:

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

Anda juga dapat memberikan "konfigurasi" beberapa opsi lain, jika Anda mau. Lakukan "./configure --help" untuk melihatnya. Saya harap Anda memiliki cadangan sebelum melakukannya, jika terjadi kesalahan ....

Robert Martin
sumber
Hmm ... Saya tidak tahu apakah saya harus memberi suara positif ini ... Ini menjawab pertanyaan ... Tapi itu ide yang buruk dan tidak menjelaskan mengapa ... Jadi mungkin saya harus memberi suara negatif?
Arafangion
Jawaban yang bagus, tetapi sebagai pemula * nix saya ingin tahu mengapa Anda memilih pergi ke ~ untuk menginstal vim. Juga, apa fungsi baris ./configure ... itu? Terima kasih lagi.
AlexMA
@AlexMA Menempatkan sumbernya ~, misalnya direktori home Anda, sepenuhnya sewenang-wenang. Jangan ragu untuk mengunduhnya ke mana pun Anda mau. Setelah Anda menginstalnya, Anda juga dapat menghapus direktori (sumber tidak lagi diperlukan pada saat itu).
Robert Martin
3
Terima kasih banyak atas tipnya! Saya memang menyesuaikan konfigurasi Anda untuk dukungan Python, PERL dan Ruby ke./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! Sekarang ketika kita menggunakan vim kita akan menggunakan yang lama." Saya pikir ini salah ketik dan Anda bermaksud mengatakan "kami akan menggunakan yang baru "
skullkid
55

Seperti Eric, saya menggunakan homebrew, tetapi saya menggunakan resep default. Begitu:

brew install mercurial
brew install vim

Dan setelah restart vim terminal homebrew harus menjadi default. Jika tidak, Anda harus mengupdate $PATHjadi /usr/local/binsebelumnya /usr/bin. Misalnya tambahkan yang berikut ini ke Anda .profile:

export PATH=/usr/local/bin:$PATH
Koen.
sumber
6
@Beau Ini tidak benar, homebrew memiliki rumus untuk vim: github.com/mxcl/homebrew/blob/master/Library/Formula/vim.rb
Koen.
Maaf, salahku! A brew updatememang memberi saya kembali formula untuk vim.
Beau
Perbaiki visymlinks:[sudo] ln -sf /usr/local/bin/vim /usr/bin/vi
knight9631
Saya menambahkan visymlink saya ke /usr/local/bin:ln -s /usr/local/bin/vim /usr/local/bin/vi
wisbucky
"Dan setelah menghidupkan ulang terminal homebrew vim" saat itulah saya tiba-tiba tersadar - saya harus mematikannya dan menghidupkannya lagi agar vim baru berfungsi. Terima kasih
kawan
7

Catatan untuk jawaban romainl: alias tidak bekerja sama dengan sudo karena hanya kata pertama yang diperiksa pada alias. Untuk mengubahnya, tambahkan alias lain ke .profile / .bashrc Anda:

alias sudo='sudo '

Dengan perubahan ini sudo vimakan berperilaku seperti yang diharapkan!

jayeff
sumber
6

Di Yosemite, instal vim menggunakan brewdan override-system-viopsi. Ini secara otomatis akan menginstal vim dengan fitur instalasi vim 'besar' .

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

Output dari perintah ini akan menunjukkan tempat brew menginstal vim. Di folder itu, turunkan ke /bin/vimuntuk benar-benar menjalankan vim. Ini adalah perintah Anda untuk menjalankan vim dari folder mana pun:

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

Kemudian alias perintah ini dengan menambahkan baris berikut di .bashrc Anda:

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

EDIT: Bendera --override-system-vibir sudah tidak digunakan lagi. Berubah untuk --with-override-system-vi. Sumber: https://github.com/Shougo/neocomplete.vim/issues/401

Pribadi
sumber
1
seperti ini Anda harus memperbarui alias setiap kali Anda memperbarui vim. Selain itu, tidak perlu menambahkan lokasi persis sebagai alias karena vim secara otomatis menambahkan biner ke / usr / local / bin.
Flaudre
Bendera --override-system-vibir sekarang tidak digunakan lagi. Gunakan --with-override-system-viinsted.
alhuelamo
@ahuelamo Apakah Anda punya sumber? Jika demikian, silakan edit dan sumber. Terima kasih
Pribadi
@Private Well, itu disarankan oleh brew itu sendiri. Anda dapat menemukannya di sini juga github.com/Shougo/neocomplete.vim/issues/401
alhuelamo
Menambahkan alias tidak diperlukan lagi saat menggunakan flag override.
apostl3pol
1

brew install vim --override-system-vi

Toothrot
sumber
1
Tidak memberikan deskripsi atau referensi mengapa perintah ini harus dijalankan.
ngfgrant
1

Posting blog ini sangat membantu saya. Saya menggunakan solusi "Homebrew built Vim", yang dalam kasus saya menyimpan versi baru di / usr / local / bin. Pada titik ini, posting menyarankan untuk menyembunyikan sistem vim, yang tidak berfungsi untuk saya, jadi saya menggunakan alias.

$ brew install vim
$ alias vim='/path/to/new/vim
$ which vim
vim: aliased to /path/to/new/vim
kkelleey
sumber
1
Menarik. Saya mencoba ini tetapi minuman pasti telah mengganti jalur secara otomatis. Panggilan vimtampaknya membuka vim baru (setelah membuka Terminal baru)
Dylanthepiguy
1
@Dylanthepiguy setuju, tidak perlu membuat alias disini jika menggunakan homebrew. Keduanya memulai shell baru dan melakukan re-sourcing bashrc saya di terminal yang ada, keduanya bekerja untuk memperbarui perintah vim ke versi homebrew baru.
kjones
1

Saya baru saja menginstal vim oleh:

brew install vim

sekarang vim baru diakses oleh vimdan vim lama (vim built-in) olehvi

MIA
sumber