2012-11-15 50 views
10

ví dụ:Tại sao đường dẫn dòng lệnh vim của tôi khác với đường dẫn shell của tôi?

$ echo $PATH 
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/bin:~/bin:/usr/local/Cellar/python3/3.2.3/bin 

$ vim 
:! echo $PATH 
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:~/bin:/usr/local/Cellar/python3/3.2.3/bin 

Tôi mong đợi chúng giống nhau. Tại sao chúng khác nhau?

Nếu nó làm cho một sự khác biệt, đây là vỏ, phiên bản vim tôi và phiên bản hệ điều hành:

$ echo $SHELL 
SHELL=/usr/local/bin/zsh 

$ /usr/local/bin/zsh --version 
zsh 5.0.0 (x86_64-apple-darwin12.0.0) 

$ vim --version 
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jun 20 2012 13:16:02) 
Compiled by [email protected] 


$ sw_vers 
ProductName: Mac OS X 
ProductVersion: 10.8.2 
BuildVersion: 12C60 

(Mountain Lion) 
+0

Làm thế nào để bạn khởi động vim? Và đầu ra của 'echo & shell' trong vim là gì? Chúng có khác nếu bạn đặt 'set shellcmdflag = -ic' và sau đó là'! Echo $ SHELL'? – ZyX

Trả lời

3

Tôi không thể giải quyết vấn đề này bằng zsh và kết thúc bằng cách sử dụng bash cho vỏ vim của tôi.

Dưới đây là những gì tôi đã làm:

  1. sửa đổi zshrc của tôi để làm việc với bash
  2. ln -s .zshrc .bashrc
  3. thêm set shell=bash đến file vimrc của tôi

và bây giờ vim tôi dòng lệnh PATH tương đương với shell Zsh của tôi.

1

Có rất nhiều câu hỏi tương tự trên SO và SU.

Vỏ của bạn thực hiện các tệp * rc khác nhau tùy thuộc vào các đối số được đưa ra tại thời điểm khởi chạy. Vì vậy, bạn cần phải thiết lập Vim để nó khởi động trình bao của bạn với các đối số đúng.

Sau đây giúp bash, tôi gần như chắc chắn có một lá cờ tương tự trong zsh.

set shell=bash\ -i 

Xem cờ $ man zsh cho cờ phải và thứ tự thực hiện phù hợp.

+3

Chính xác là như vậy, zsh có nghĩa là tương thích với POSIX.Nhưng 'shell' không phải là một nơi thích hợp để thiết lập cờ tương tác, có' shellcmdflag'. – ZyX

+0

Bạn nói đúng. Tại sao bạn không biến nhận xét của mình thành câu trả lời đúng? – romainl

+1

Vì không có phản hồi từ tác giả, tôi không chắc đó là câu trả lời đúng. Nó có thể xuất hiện rằng một số thay đổi plugin $ PATH hoặc vỏ thực sự là khác nhau, hoặc vim được đưa ra từ một phím tắt (và có thể là thực sự mvim); trên hệ thống của tôi thực tế là một số thành phần của $ PATH được định nghĩa trong zshrc và shell không tương tác không ngăn cản $ PATH từ giống nhau: nó chỉ được thừa kế từ môi trường, không được xây dựng bằng cách sử dụng các tệp rc. Trên thực tế, có các tệp * no * rc có nguồn gốc từ vỏ không tương tác (/ etc/zsh/zshenv và ~/.zshenv bị thiếu, các tệp khác không có nguồn gốc). – ZyX

11

Đây là known problem được giới thiệu bởi Apple trong OS X 10.5 Leopard.

Nếu bạn đang sử dụng Bash hoặc Zsh và đang sử dụng các hệ vỏ không tương tác, bạn sẽ bị ảnh hưởng.

Chạy sudo chmod ugo-x /usr/libexec/path_helper sẽ sửa chữa bạn, nhưng bạn nên xem bài viết để xem lý do.

Từ this SO answer

-1

tôi không sử dụng mac hoặc zsh (Tôi đang trên linux), tuy nhiên tôi chạy vào vấn đề này khi tôi chạy gvim từ Menu MATE.

tôi giải quyết nó bằng cách thêm này để vimrc của tôi:

if $PATH !~ "\.rbenv" 
    let $PATH="/home/username/.rbenv/shims:/home/username/.rbenv/bin:" . $PATH 
endif 

Điều này tránh đặt nó nếu bạn chạy vim từ một thiết bị đầu cuối, nếu không thì đường dẫn rbenv sẽ được bao gồm hai lần.

Tôi đã cố gắng thiết lập ứng dụng để chạy qua thiết bị đầu cuối, nhưng điều đó không giúp ích gì.

Các vấn đề liên quan