【问题标题】:Ctags path in vim is different from the shellvim中的ctags路径与shell不同
【发布时间】:2014-06-18 22:50:34
【问题描述】:

我试图从 vim 生成 ctags。我使用 Exuberant ctags。

所以问题是,当我从 vim 执行 :!ctags:call system('ctags') 时,它不起作用,因为它使用我的默认 ctags 而不是旺盛的 ctags。 我在我的 shell 中遇到了类似的问题,我通过首先指定 exuberant 的路径来克服它 喜欢export PATH=/usr/bin/local/:$PATH 所以这是真正奇怪的部分 当我在 vim 中执行 echo $PATH 时,它会显示正确的路径。但是当我做:call system('which ctags') 它向我显示/usr/bin/ctags 而不是/usr/bin/local/ctags。 看不懂怎么回事??

虽然我可以通过call system('/usr/bin/local/ctags') 解决这个问题,但我只是想知道那里是否有更好的东西。

编辑: 我使用 OSX 10.9.3

:set shell? -> shell=/bin/zsh

set shellcmdflag -> shellcmdflag=-c

我在 zshrc 文件中将路径设置为export PATH="/usr/local/bin:usr/local:$PATH

【问题讨论】:

    标签: vim path ctags


    【解决方案1】:

    当你执行:!command:call system('command') 时,Vim 会根据'shell' 的值和:help 'shell' 下列出的一系列其他选项启动一个新的子shell。 'shellcmdflag' 选项很重要,因为它通常会告诉您的 shell 如何启动(交互与否,登录与否),这通常会影响 *rc 文件的来源以及是否看到您的环境变量。

    请用这些信息更新您的问题:

    • 您的操作系统
    • :set shell?
    • :set shellcmdflag?
    • 您在哪个*rc 文件中更改了PATH

    【讨论】:

    • 这真的很有帮助!我发现我的操作系统甚至在我的 zshrc 来源之前就破坏了 $PATH。正如这里提到的stackoverflow.com/questions/9853584/…
    • 不过我只有一个小问题,是否可以将我当前的 shell 路径(从我开始 vim 的位置)获取到 vim,因为 virtualenv 更改了 $PATH 变量,然后 vim 启动了一个新的 shell并没有看到。我知道其他解决方法,但只是想知道是否有更好的方法?!比如在使用 shell 命令时设置路径之类的?!
    • 是的,这是 Mac OS X 上的一个常见问题。如果您不每天使用 PATH 来解决它相对容易,但 virtualenv 肯定会使整个事情变得比它应该的更复杂.作为一种解决方法,您可以在调用 shell 命令之前调整路径:$ export FOO="foo" && echo $FOO
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多