อัปเดต vim ในตัวบน Mac OS X


112

ฉันรู้ว่านี้อาจจะเหมาะสมกว่าที่ถามที่แตกต่างกัน แต่ที่ผมพยายามมีการเพิ่มแท็กไม่มีแท็กเท่านั้นvim macvimดังนั้นฉันคิดว่าฉันอาจได้ผู้ชมที่ดีกว่าที่นี่

ใน Terminal ฉันทำสิ่งต่อไปนี้

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

เมื่อฉันเรียกดูhttp://www.vim.orgฉันเห็นรายการข่าว

Vim 7.3 เปิดตัวแล้ว!

ฉันจะอัปเดตกลุ่มในตัวได้อย่างไร ฉันอยากจะทำมันอย่างหมดจด (เช่นไม่มีการติดตั้งซ้ำหรือดาวน์โหลดเพิ่มเติมใด ๆ ไม่มี macports ฯลฯ )

ผมถือว่าใช้ Mercurial (ที่ผมได้ใช้มันสำหรับสิ่งอื่น ๆ ) ตามคำแนะนำของที่นี่

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

แต่ฉันคิดว่าจะทำให้การติดตั้งซ้ำกัน แม้จะมีข้อกำหนด "สะอาด" ตามที่กล่าวไว้ข้างต้น แต่ก็ยังยินดีรับการแก้ปัญหา "ไม่สะอาด" เนื่องจากอาจไม่มีวิธีอื่นจริงๆ


8
โดยทั่วไปฉันคิดว่าเป็นการดีที่สุดที่จะไม่ยุ่งกับบิตที่ติดตั้งของ Apple และใช้ macports / homebrew / etc /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 รุ่นล่าสุดซึ่งมาพร้อมกับไฟล์ปฏิบัติการที่สมบูรณ์มากและใช้ใน 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: ประการแรกเพราะมันไม่มีประโยชน์สองเพราะ soft ดีกว่ายากสามเพราะ Vim เริ่มต้นใช้งานได้และหากมีบางอย่างผิดพลาดคุณอาจไม่มี Vim ที่ใช้งานได้อีกต่อไปการอัปเกรดระบบสี่ครั้งอาจเขียนทับ Vim ของคุณและรายการอาจเป็นไปได้ ไป
เรื่อย ๆ

2
... หรือalias vim='mvim -v'. แต่ทั้งสองอย่างนี้ล้มเหลวเมื่อsudo vimใช้เวอร์ชันเก่า ฉันขอแนะนำให้ใช้คำตอบของ @ RobertMartin หรือผู้จัดการแพ็คเกจ นอกจากนี้ยังมีอีกหนึ่งตัวเลือก: คำตอบนี้โดยSlizzeredบน serverfault.com ซึ่งช่วยให้คุณส่งนามแฝงไปsudoได้
Brian McCutchon

"นามแฝงคือทางลัดสำหรับเชลล์แบบโต้ตอบซึ่งกระบวนการอื่น ๆ จะไม่ใช้" stackoverflow.com/questions/37466767/... ดังนั้นนี้ไม่ได้ทำงานให้พูดหรือgit difftool git commit
jasonszhao

131

หากฉันเข้าใจสิ่งต่างๆอย่างถูกต้องคุณต้องการติดตั้งผ่าน 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" เพื่อดู ฉันหวังว่าคุณจะมีข้อมูลสำรองก่อนที่จะทำ แต่ในกรณีที่มีบางอย่างผิดพลาด ....


อืม ... ฉันไม่รู้ว่าควรโหวตให้คะแนนดีไหม ... มันตอบคำถามได้ดี ... แต่มันเป็นความคิดที่ไม่ดีและไม่ได้อธิบายว่าทำไม ...
Arafangion

คำตอบที่ดี แต่ในฐานะผู้เริ่มต้น * nix ฉันอยากรู้ว่าทำไมคุณถึงเลือกไป ~ เพื่อติดตั้งกลุ่ม นอกจากนี้. / กำหนดค่า ... line ทำอะไร? ขอบคุณอีกครั้ง.
AlexMA

@AlexMA การใส่ซอร์สเข้าไป~เช่นโฮมไดเร็กทอรีของคุณเป็นไปโดยพลการ อย่าลังเลที่จะดาวน์โหลดได้ทุกที่ที่คุณต้องการ เมื่อคุณติดตั้งแล้วคุณสามารถลบไดเร็กทอรีได้เช่นกัน (ไม่จำเป็นต้องใช้แหล่งที่มาอีกต่อไปในตอนนั้น)
Robert Martin

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

เช่นเดียวกับ Eric ฉันใช้ homebrew แต่ฉันใช้สูตรเริ่มต้น ดังนั้น:

brew install mercurial
brew install vim

และหลังจากรีสตาร์ท vim ของเทอร์มินัล homebrew ควรเป็นค่าเริ่มต้น ถ้าไม่ได้คุณควรปรับปรุงของคุณ$PATHเพื่อให้เป็นก่อน/usr/local/bin /usr/binเช่นเพิ่มสิ่งต่อไปนี้ในของคุณ.profile:

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

6
@Beau นี่ไม่ถูกต้อง homebrew มีสูตรสำหรับ vim: github.com/mxcl/homebrew/blob/master/Library/Formula/vim.rb
Koen

ขอโทษนะความผิดของฉัน! A brew updateได้ให้สูตรสำหรับกลุ่มกลับคืนมา
Beau

แก้ไขvisymlinks:[sudo] ln -sf /usr/local/bin/vim /usr/bin/vi
knight9631

ฉันเพิ่มvisymlink ของฉันไปที่/usr/local/bin:ln -s /usr/local/bin/vim /usr/local/bin/vi
wisbucky

"และหลังจากรีสตาร์ท vim ของเทอร์มินัล homebrew" นั่นคือตอนที่มันทำให้ฉันรู้สึกแย่ - ฉันต้องปิดและเปิดอีกครั้งเพื่อให้กลุ่มใหม่ทำงาน ขอบคุณผู้ชาย
Peter Perháč

7

หมายเหตุสำหรับคำตอบของ romainl: นามแฝงไม่สามารถทำงานร่วมกับ sudo ได้เนื่องจากมีการตรวจสอบคำแรกเท่านั้นบนนามแฝง หากต้องการเปลี่ยนสิ่งนี้ให้เพิ่มนามแฝงอื่นใน. profile / .bashrc ของคุณ:

alias sudo='sudo '

ด้วยการเปลี่ยนแปลงนี้sudo vimจะมีพฤติกรรมตามที่คาดไว้!


6

บน Yosemite ให้ติดตั้ง vim โดยใช้brewและoverride-system-viตัวเลือก สิ่งนี้จะติดตั้ง vim โดยอัตโนมัติด้วยคุณสมบัติของการติดตั้งvim 'ขนาดใหญ่'

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

ผลลัพธ์ของคำสั่งนี้จะแสดงให้คุณเห็นว่ากลุ่มที่ติดตั้งเบียร์อยู่ที่ไหน ในโฟลเดอร์นั้นลงไป/bin/vimเพื่อเรียกใช้ vim จริงๆ นี่คือคำสั่งของคุณในการเรียกใช้กลุ่มจากโฟลเดอร์ใด ๆ :

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

จากนั้นแทนคำสั่งนี้โดยเพิ่มบรรทัดต่อไปนี้ใน. bashrc ของคุณ:

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

แก้ไข: --override-system-viเลิกใช้ธง Brew แล้ว เปลี่ยนเป็น--with-override-system-vi. ที่มา: https://github.com/Shougo/neocomplete.vim/issues/401


1
เช่นนี้คุณต้องอัปเดตนามแฝงทุกครั้งที่คุณอัปเดตกลุ่ม นอกจากนี้ไม่จำเป็นต้องเพิ่มตำแหน่งที่แน่นอนเป็นนามแฝงเนื่องจาก vim จะเพิ่มไบนารีให้กับ / usr / local / bin โดยอัตโนมัติ
Flaudre

--override-system-viเลิกใช้ธง Brew แล้ว ใช้--with-override-system-viinsted.
alhuelamo

@ahuelamo มีแหล่งมั้ยคะ? หากเป็นเช่นนั้นอย่าลังเลที่จะแก้ไขและแหล่งที่มา ขอบคุณ
ส่วนตัว

@ ส่วนตัวดีที่แนะนำโดยชงเอง คุณสามารถค้นหาได้ที่นี่เช่นกันgithub.com/Shougo/neocomplete.vim/issues/401
alhuelamo

การเพิ่มนามแฝงจะซ้ำซ้อนเมื่อใช้แฟล็กแทนที่
apostl3pol


1

โพสต์บล็อกนี้มีประโยชน์สำหรับฉัน ฉันใช้โซลูชัน "Homebrew built Vim" ซึ่งในกรณีของฉันบันทึกเวอร์ชันใหม่ใน / usr / local / bin ณ จุดนี้โพสต์แนะนำให้ซ่อนกลุ่มระบบซึ่งไม่ได้ผลสำหรับฉันฉันจึงใช้นามแฝงแทน

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

1
น่าสนใจ. ฉันลองสิ่งนี้ แต่การชงจะต้องเปลี่ยนเส้นทางโดยอัตโนมัติ การโทรvimดูเหมือนจะเปิดกลุ่มใหม่ (หลังจากเปิด Terminal ใหม่)
Dylanthepiguy

1
@Dylanthepiguy เห็นด้วยไม่จำเป็นต้องสร้างนามแฝงที่นี่หากใช้ homebrew ทั้งการเริ่มต้นเชลล์ใหม่และการจัดหา bashrc ใหม่ในเทอร์มินัลที่มีอยู่ทั้งคู่ทำงานเพื่ออัปเดตคำสั่ง vim เป็นเวอร์ชัน homebrew ใหม่
kjones

1

ฉันเพิ่งติดตั้งกลุ่มโดย:

brew install vim

ตอนนี้ vim ใหม่ถูกเข้าถึงโดยvimและ vim เก่า (vim ในตัว) โดยvi

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.