Cập nhật vim tích hợp trên Mac OS X


112

Tôi biết điều này có thể phù hợp hơn ở Ask Different, nhưng khi tôi thử thêm các thẻ vào đó, không có vimthẻ nào cả macvim. Vì vậy, tôi nghĩ rằng tôi có thể có được một lượng khán giả tốt hơn ở đây.

Trong Terminal, tôi làm như sau

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

Khi tôi duyệt đến http://www.vim.org , tôi thấy một mục tin tức

Vim 7.3 được phát hành!

Làm cách nào để cập nhật vim tích hợp của tôi? Tôi rất muốn làm điều đó một cách rõ ràng (tức là không có cài đặt trùng lặp hoặc bất kỳ tải xuống bổ sung nào, không có macports, v.v.)

Tôi đã cân nhắc sử dụng Mercurial (vì tôi đã sử dụng nó cho những việc khác), theo hướng dẫn ở đây .

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

Nhưng tôi nghĩ rằng điều đó sẽ tạo ra một cài đặt trùng lặp. Bất chấp yêu cầu "sạch" của tôi như đã nói ở trên, các giải pháp "không sạch" cũng được hoan nghênh, vì có lẽ thực sự không còn cách nào khác.


8
Nói chung, tôi nghĩ tốt nhất là không nên sử dụng các bit cài đặt của Apple và sử dụng macports / homebrew / etc. hoặc tự xây dựng và cài đặt nó vào /usr/local/. Không giống như nó sẽ chiếm nhiều không gian.
steveax

github.com/b4winckler/macvim/releases <- bạn có thể tải các bức ảnh chụp MacVim mới nhất đây
lfender6445

Câu trả lời:


119

Đừng ghi đè Vim tích hợp sẵn.

Thay vào đó, hãy cài đặt nó từ nguồn ở một vị trí khác hoặc qua Homebrew hoặc MacPorts ở vị trí mặc định của chúng, sau đó thêm dòng này vào .bashrc hoặc .profile của bạn:

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

và / hoặc thay đổi của bạn $PATHđể nó nhìn vào vị trí của nó trước vị trí mặc định.

Điều tốt nhất cần làm, theo ý kiến ​​của tôi, chỉ cần tải xuống MacVim mới nhất đi kèm với tệp thực thi vim rất hoàn chỉnh và sử dụng nó trong Terminal.app như vậy.

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

3
Trên Mac OS X 10.8.2, con đường là hơi khác nhau:/Applications/MacVim.app/Contents/MacOS/Vim
zakangelle

2
Không, nó giống nhau trên mọi phiên bản Mac OS X. Tôi vừa mắc lỗi đánh máy. Cảm ơn.
romainl

@ fabian789: Thứ nhất vì nó vô dụng, hai vì mềm tốt hơn cứng, ba vì Vim mặc định hoạt động và nếu có sự cố, bạn rất có thể không còn Vim hoạt động nữa, bốn là nâng cấp hệ thống có thể ghi đè Vim của bạn và danh sách có thể đi và về ...
romainl

2
... hoặc alias vim='mvim -v'. Nhưng cả hai đều không thành công khi sudo vimsử dụng phiên bản cũ. Tôi sẽ đề xuất sử dụng câu trả lời của @ RobertMartin hoặc trình quản lý gói. Ngoài ra còn có một tùy chọn khác: câu trả lời này của Slizzered trên serverfault.com, cho phép bạn chuyển các bí danh cho sudo.
Brian McCutchon

Câu trả lời này cho biết: "Bí danh là các phím tắt cho một trình bao tương tác; chúng không được sử dụng bởi các quy trình khác". stackoverflow.com/questions/37466767/… Do đó, điều này không hoạt động cho, nói git difftoolhoặc git commit.
jasonszhao

130

Nếu tôi hiểu mọi thứ một cách chính xác, bạn muốn cài đặt trên Vim hiện có của mình, tốt hơn hay tệ hơn :-) Đây là một ý tưởng tồi và nó không phảicách "sạch" để làm điều đó. Tại sao? Chà, OS X hy vọng rằng sẽ không có gì thay đổi trong / usr / bin mà bạn không biết về nó, vì vậy bất cứ khi nào bạn ghi đè lên nội dung trong đó, bạn sẽ có nguy cơ phá vỡ sự phụ thuộc lẫn nhau phức tạp. Và, giả sử bạn làm hỏng thứ gì đó - không có cách nào để "hoàn tác" thiệt hại đó. Bạn sẽ buồn và cô đơn. Bạn có thể phải cài đặt lại OS X.

Phần 1: Một ý tưởng hay hơn

Cách "sạch sẽ" là cài đặt ở một nơi riêng biệt và đặt quyền ưu tiên nhị phân mới cao hơn trong $ PATH. Đây là cách tôi khuyên bạn nên làm điều đó:

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

Thì đấy! Bây giờ khi chúng ta sử dụng vim, chúng ta sẽ sử dụng vim mới. Tuy nhiên, để quay lại cấu hình cũ của chúng tôi trong trường hợp f * ckups lớn, chúng tôi chỉ cần xóa thư mục / 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

Xem cái này sạch như thế nào.

Tôi khuyên bạn không nên cài đặt trong / usr / local / bin khi bạn muốn ghi đè các tệp nhị phân trong / usr / bin, bởi vì theo mặc định OS X đặt / usr / bin trong $ PATH có mức ưu tiên cao hơn / usr / local / bin và vặn với nó sẽ mở hộp sâu của chính nó .... Vì vậy, đó là điều bạn NÊN làm.

Phần 2: Câu trả lời "đúng" (nhưng một ý kiến ​​tồi)

Giả sử bạn đang làm điều đó, bạn chắc chắn đang đi đúng hướng. Để cài đặt trên cài đặt hiện tại của bạn, bạn cần đặt thư mục "tiền tố". Điều đó được thực hiện như thế này:

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

Bạn cũng có thể chuyển "cấu hình" một vài tùy chọn khác, nếu muốn. Thực hiện "./configure --help" để xem chúng. Tôi hy vọng bạn đã có một bản sao lưu trước khi thực hiện, tuy nhiên, trong trường hợp xảy ra sự cố ....


Hmm ... Tôi không biết mình có nên tán thành điều này không ... Nó trả lời cho câu hỏi ... Nhưng đó là một ý kiến ​​tồi và không giải thích được tại sao ... Vậy có lẽ tôi nên phản đối nó?
Arafangion

Câu trả lời tuyệt vời, nhưng với tư cách là một người mới bắt đầu * nix, tôi rất tò mò tại sao bạn lại chọn ~ để cài đặt vim. Ngoài ra, dòng ./configure ... đó làm gì? Cảm ơn một lần nữa.
AlexMA

@AlexMA Việc đưa nguồn vào ~, tức là thư mục chính của bạn, là hoàn toàn tùy ý. Hãy tải xuống bất cứ nơi nào bạn muốn. Sau khi cài đặt xong, bạn cũng có thể xóa thư mục (nguồn không còn cần thiết vào thời điểm đó).
Robert Martin

3
Cảm ơn rất nhiều cho một mẹo! Tôi đã điều chỉnh cấu hình của bạn cho hỗ trợ Python, PERL và Ruby thành./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 Bây giờ khi chúng tôi sử dụng vim chúng tôi sẽ sử dụng một tuổi." Tôi nghĩ rằng đây là một lỗi đánh máy và bạn có nghĩa là để nói "chúng tôi sẽ sử dụng mới một"
skullkid

55

Giống như Eric, tôi sử dụng homebrew, nhưng tôi sử dụng công thức mặc định. Vì thế:

brew install mercurial
brew install vim

Và sau khi khởi động lại, vim của homebrew của thiết bị đầu cuối sẽ là mặc định. Nếu không, bạn nên cập nhật của bạn $PATHđể đó /usr/local/binlà trước /usr/bin. Ví dụ: thêm phần sau vào của bạn .profile:

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

6
@Beau Điều này không chính xác, homebrew có công thức cho vim: github.com/mxcl/homebrew/blob/master/Library/Formula/vim.rb
Koen.

Xin lỗi, lỗi của tôi! A brew updatethực sự đã trả lại cho tôi một công thức cho vim.
Beau

Fix visymlink:[sudo] ln -sf /usr/local/bin/vim /usr/bin/vi
knight9631

Tôi đã thêm viliên kết biểu tượng của mình vào /usr/local/bin:ln -s /usr/local/bin/vim /usr/local/bin/vi
khôn ngoan.

"Và sau khi khởi động lại vim homebrew của thiết bị đầu cuối", đó là lúc nó đột ngột xảy ra với tôi - tôi cần phải tắt và bật lại vim mới hoạt động. Cảm ơn người đàn ông
Peter Perháč

7

Một lưu ý cho câu trả lời của romainl: bí danh không hoạt động cùng với sudo vì chỉ từ đầu tiên được kiểm tra trên bí danh. Để thay đổi điều này, hãy thêm một bí danh khác vào .profile / .bashrc của bạn:

alias sudo='sudo '

Với sự thay đổi sudo vimnày sẽ hoạt động như mong đợi!


6

Trên Yosemite, cài đặt vim bằng cách sử dụng brewoverride-system-vitùy chọn. Điều này sẽ tự động cài đặt vim với các tính năng của cài đặt vim 'khổng lồ' .

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

Đầu ra của lệnh này sẽ hiển thị cho bạn nơi cài đặt vim. Trong thư mục đó, đi xuống /bin/vimđể thực sự chạy vim. Đây là lệnh của bạn để chạy vim từ bất kỳ thư mục nào:

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

Sau đó, đặt bí danh cho lệnh này bằng cách thêm dòng sau vào .bashrc của bạn:

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

CHỈNH SỬA: Cờ đoàn --override-system-vikhông được dùng nữa. Đã thay đổi cho --with-override-system-vi. Nguồn: https://github.com/Shougo/neocomplete.vim/issues/401


1
như thế này bạn phải cập nhật bí danh mỗi khi cập nhật vim. Ngoài ra, không cần thiết phải thêm vị trí chính xác làm bí danh vì vim tự động thêm mã nhị phân vào / usr / local / bin.
Flaudre

Cờ đoàn --override-system-vihiện không được dùng nữa. Sử dụng --with-override-system-vichèn.
alhuelamo

@ahuelamo Bạn có nguồn không? Nếu vậy, vui lòng chỉnh sửa và nguồn. Cảm ơn
Riêng tư

@Private Chà, đó là do chính nhà sản xuất đề xuất. Bạn cũng có thể tìm thấy nó ở đây github.com/Shougo/neocomplete.vim/issues/401
alhuelamo

Việc thêm bí danh là không cần thiết khi sử dụng cờ ghi đè.
Apol3pol

1

brew install vim --override-system-vi


1
Không cung cấp mô tả hoặc tham chiếu về lý do tại sao lệnh này nên được chạy.
ngfgrant

1

Bài đăng trên blog này rất hữu ích cho tôi. Tôi đã sử dụng giải pháp "Homebrew được xây dựng Vim", trong trường hợp của tôi, giải pháp này đã lưu phiên bản mới trong / usr / local / bin. Tại thời điểm này, bài đăng đề xuất ẩn vim hệ thống, điều này không phù hợp với tôi, vì vậy tôi đã sử dụng bí danh để thay thế.

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

1
Hấp dẫn. Tôi đã thử điều này nhưng bia phải tự động thay thế đường dẫn. Calling vimdường như mở vim mới (sau khi mở cửa sổ dòng lệnh mới)
Dylanthepiguy

1
@Dylanthepiguy đã đồng ý, không cần tạo bí danh ở đây nếu sử dụng homebrew. Cả việc bắt đầu một trình bao mới và tìm nguồn cung cấp lại bashrc của tôi trong thiết bị đầu cuối hiện có đều hoạt động để cập nhật lệnh vim lên phiên bản homebrew mới.
kjones

1

Tôi vừa cài đặt vim bằng cách:

brew install vim

bây giờ vim mới được truy cập vimvà vim cũ (vim tích hợp sẵn) bởivi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.