如何在 Windows 上告诉逃犯我的 Git 路径?

eck*_*kes 7 windows git vim cmd

所以我下载了 Vim 的逃犯插件并尝试让它在我的 Windows 7 机器上运行。

我没有路径git.exe,我%PATH%不想添加它,因为这样做可能会出现问题。

我的 Git 安装在C:\Program Files (x86)\Git\. 有一个逃犯的配置选项,我可以告诉我到git.exe( g:fugitive_git_executable) 的路径。

我尝试了几种口味:

  1. 'C:/Program Files (x86)/Git/cmd/git.exe'
  2. 'C:\Program Files (x86)\Git\cmd\git.exe'
  3. "C:\Program Files (x86)\Git\cmd\git.exe"
  4. "C:\\Program Files (x86)\\Git\\cmd\\git.exe"

但没有一个工作。似乎在 1、2、4 中,路径中的括号有问题。结果调用:Git status

C:\WINDOWS\system32\cmd.exe /c (C:\Program Files ^(x86^)\Git\cmd\git.exe status)
Run Code Online (Sandbox Code Playgroud)

并且 cmd 窗口抱怨"\Git\cmd\git.exe" could not be processed(从德语翻译)。

如何指定路径git.exe以便我不必扩展我的$PATH变量?

或者更一般:在 Vim 中使用该system命令时,如何调用位于 下的程序'C:\Program Files (x86)\

198*_*983 6

在您的 vimrc 中,添加如下内容:

if has('win32')
    let $PATH .= ';' . 'C:/Program Files (x86)/Git/bin'
endif
Run Code Online (Sandbox Code Playgroud)

这不会影响 Vim 之外的 %PATH% 的值。

或者,要让 Fugitive 像宣传的那样工作,您必须对其进行一些修补。在 s:Git() 中替换

call s:ExecuteInTree('!'.git.' '.cmd)
Run Code Online (Sandbox Code Playgroud)

if has('win32')
    call s:ExecuteInTree('!"'.git.' '.cmd.'"')
else
    call s:ExecuteInTree('!'.git.' '.cmd)
endif
Run Code Online (Sandbox Code Playgroud)

然后在 vimrc 中的可执行文件路径周围加上引号:

let g:fugitive_git_executable = '"C:/Program Files (x86)/Git/bin/git"'
Run Code Online (Sandbox Code Playgroud)

(有关多个参数,请参阅cmd.exe 的正确引用。)

您可能想与维护者取得联系。如果这个问题以前没有出现,我会感到惊讶。

我只是修改$PATH。无论如何,有些程序需要正确设置 $PATH。

(另外:@echristopherson 的解决方案是完全可行的,但在 21 世纪不得不求助于它是很烦人的。)