gVim 作为 cygwin 下的 git 编辑器

joh*_*nny 8 cygwin git gvim

我使用 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 的新手。

Leg*_*las 6

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不要试图将 () 解释为它认为这意味着什么。)


p.v*_*zli 0

当使用路径名中的空格时,通常最好将它们封装在引号中。这将解决您的问题:

git config core.editor "/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe"
Run Code Online (Sandbox Code Playgroud)