我使用 msysgit 并且希望将 gvim 作为我的 git 编辑器。
我使用 cygwin bash 而不是 git bash。
跑步
$ /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe
Run Code Online (Sandbox Code Playgroud)
启动 gvim。但是如果我将其设置为 git 编辑器:
$ git config core.editor /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe
Run Code Online (Sandbox Code Playgroud)
并运行提交我得到:
/cygdrive/c/Program Files (x86)/Vim/vim73/gvim.exe: -c: line 0: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)
然后我在需要的地方添加转义反斜杠:
$ git config core.editor /cygdrive/c/Program\\\ Files\\\ \\\(x86\\\)/Vim/vim73/gvim.exe
Run Code Online (Sandbox Code Playgroud)
这仍然给我:
/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe: /cygdrive/c/Program Files (x86)/Vim/vim73/gvim.exe: No such file or directory
error: cannot run /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe: No such file or directory
error: There was a problem with the editor '/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe'.
Run Code Online (Sandbox Code Playgroud)
问题是,我可以从“无法运行”之后复制字符串并粘贴它并运行。我想这可能是由 Program Files (x86) 中的空格或括号引起的(他们到底在想什么?)。
由于 cygwin 似乎可以处理它,我想我可以在 /usr/local/bin 中创建一个符号链接,因为它在我的 $PATH 中并设置
$ git config core.editor /usr/local/bin/gvim
Run Code Online (Sandbox Code Playgroud)
我确认 /usr/local/bin/gvim 启动了 gvim。尽管如此,运行提交给了我:
error: cannot spawn /usr/local/bin/gvim.exe: No such file or directory
error: There was a problem with the editor '/usr/local/bin/gvim.exe'.
Run Code Online (Sandbox Code Playgroud)
取消设置 core.editor 并尝试
$ export GIT_EDITOR=/usr/local/bin/gvim.exe
Run Code Online (Sandbox Code Playgroud)
给了我同样的错误。
这个SO 答案建议我使用脚本打开编辑器。
我从 /usr/local/bin 中删除了软链接 gvim.exe 和
$ cat > gvim
#!/bin/sh
/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe
$ chmod u+x gvim
Run Code Online (Sandbox Code Playgroud)
我测试运行脚本,它有效,gvim 启动。
$ gvim
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我运行 commit 时出现错误
$ git commit
error: cannot spawn /usr/local/bin/gvim: No such file or directory
error: There was a problem with the editor '/usr/local/bin/gvim'.
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能使用 gVim 作为 git 编辑器?有人试过吗?我犯了错误吗?我必须承认我是 linux 的新手。
git config 似乎删除了一级引号,所以添加另一个。这对我有用(使用另一个编辑器):
git config core.editor "\"c:/Program Files (x86)/Vim/vim73/gvim.exe\""
(注意路径周围的转义引号,这会导致编辑器在您执行例如 git commit 时启动为“c:/Program Files (x86)/Vim/vim73/gvim.exe”,因此使用引号告诉 bash shell不要试图将 () 解释为它认为这意味着什么。)
当使用路径名中的空格时,通常最好将它们封装在引号中。这将解决您的问题:
git config core.editor "/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe"
Run Code Online (Sandbox Code Playgroud)