Answers:
MacVim似乎以忽略普通用户自定义点文件的方式获取$ PATH。
我不能说为什么他们更喜欢这样做,但这似乎是事实。在首选项(在Advanced(高级)选项卡下)中,您可以选择“在登录shell中启动Vim进程”,但这$PATH
对我来说只是稍有改善。
据我所知,MacVim使用/usr/libexec/path_helper
-依次使用在/etc/paths
文件中找到的项目(1)和在/etc/paths.d/
目录中找到的其他任何项目(2)。在用户的主目录中进行的任何更改(通过.profile
等)都将被忽略。
简而言之,您可以获得OSX的默认值,以及将自身添加到的所有应用程序/etc/paths.d
。(例如,MacTex在我的系统上执行此操作。)因此,如果要调整MacVim路径,一种方法是将包含项的文件添加到/etc/paths.d
。(/etc/paths
从那时起,我就不会直接进行编辑,否则您将面临系统更新撤消更改的风险。)
感谢您让我知道这一点。我打算在MacVim提交愿望清单错误。
/etc/paths.d
,则下次启动MacVim时会显示。您要放入哪种格式?我相信它应该是每行一项,每行上有一个$ PATH目录(例如,/ usr / texbin)。
它不是来自.bash_profile,但可以在.vimrc中使用它:
let $PATH=$PATH . ':/blah/foo'
您必须使用:,否则它将不是正确的PATH变量。
/usr/bin/vim
从Apple和/opt/local/bin/vim
MacPorts)中用Vim对其进行了测试,这似乎没有必要。终端中的Vim已经选择了由我的点文件提供的正确$ PATH
我不敢相信我以前没有看到过。好吧,我可以相信。无论如何,MacVim都提供了解决此问题的选项。在“首选项”下,仅选中“在登录shell中启动Vim进程”。就是这样,它有效。时髦 愚蠢的我。
我无意中写下了这个答案,却没有意识到Telemachus已经给了我正确的答案。将他标记为答案。
此Mac Dev Center文章可能有用。
MacVim将提供~/.zprofile
和/etc/profile
,因此您可以PATH
在其中放置设置。
请参阅https://github.com/b4winckler/macvim/wiki/Troubleshooting#for-zsh-users以及Stack Overflow上的此问题。
(在MacVim 7.3版(65)中进行了测试)。
我今天遇到了这个。MacVim不再具有“登录外壳”选项,并且为用户特定的设置编辑系统范围的文件是粗略的。
这是仅使用vim选项的解决方案(请参阅:help :!
和:help shell
)。
在您~/.vimrc
添加的行
set shell=/bin/bash
set shellcmdflag=-l\ -c
这将使bash
您成为(Mac)Vim的默认外壳程序,并将-l
标志(登录外壳程序)添加到使用调用的命令中:!{cmd}
。执行时:shell
,bash作为“不是登录shell的交互式shell”启动。
为了使$PATH
工作,你需要有它设置~/.bash_profile
为:!
,并~/.bashrc
为:shell
。(参见INVOCATION
中man bash
)
更新:这在我的另一台计算机上不是必需的,因此可能还有其他原因是根本原因。
$PATH
在.zprofile
,并且包括所述-l
标志在任一set shell
或set shellcmdflag
。
我对UNIX的了解比对Mac的了解多,因此以下建议可能有效也可能无效。尝试将其放入您的.vimrc文件:
! source ~/.bash_profile
这也许可以解决问题,但有一点需要注意:.bash_profile只可以获取一次。它可能包含一些非幂等命令(仅执行一次的命令)。例子:
$PATH += /blah/foo:/bar/etc
调用的次数越多,获得的内容就越大,冗余度也就越大$PATH
。但是,如果这没什么大不了的话,那么对Unix的建议是将一次性命令放入文件中~/.bashrc
并source ~/.bashrc
从.vimrc
文件中运行。
:source .bash_profile
但是对于文件中的每个命令,它只会出现“不是编辑器命令”错误,并且与.bashrc相同。
我在Vim StackExchange网站上问了一个非常类似的问题,并在其中发布了一个对我有用的答案!