gVim作为cygwin下的git编辑器


8

我使用msysgit,我想将gvim作为我的git编辑器。

我用cygwin bash代替git bash。

跑步

$ /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe 

启动gvim。但是,如果我将其设置为git编辑器:

$ git config core.editor /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe

并运行提交,我得到:

/cygdrive/c/Program Files (x86)/Vim/vim73/gvim.exe: -c: line 0: syntax error near unexpected token `('

然后,在需要的地方添加转义的反斜杠:

$ git config core.editor /cygdrive/c/Program\\\ Files\\\ \\\(x86\\\)/Vim/vim73/gvim.exe

这仍然给我:

/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'.

问题是,我可以从“无法运行”之后复制字符串,然后将其粘贴并运行。我猜可能是由程序文件(x86)中的空格或括号引起的(他们在想什么?)。

由于cygwin似乎可以处理它,所以我想可以在/ usr / local / bin中创建符号链接,因为它位于我的$ PATH中并设置

$ git config core.editor /usr/local/bin/gvim

我确认/ 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'.

取消设置core.editor并尝试

$ export GIT_EDITOR=/usr/local/bin/gvim.exe 

给我同样的错误。

这样的答案建议我使用脚本打开编辑器。

我从/ usr / local / bin删除了软链接gvim.exe并

$ cat > gvim
#!/bin/sh
/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe

$ chmod u+x gvim

我测试运行脚本,它可以正常工作,gvim启动。

$ gvim

不幸的是,当我运行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'.

如何使用gVim作为git编辑器?有人尝试过吗?我犯错了吗?在Linux方面,我必须承认自己是新手。


您是否尝试过使用cygwin vi?您是否尝试过该命令which gvim
Somantra 2011年

仅当存在软链接或脚本时,哪个gvim才会输出/ usr / local / bin / gvim。我可能应该更清楚地说出我想要gVim的理由。我每天都使用它,并根据需要进行设置。如果我使用其他任何工具,我将需要维护两个编辑器设置。
约翰尼

您可能要考虑为您的rc文件使用符号链接或存储库。
Somantra 2011年

您可能必须使用批处理文件而不是cygwin Shell脚本来执行此操作。另外,要注意基于Windows的gVim与cgywin将$ HOME设置为HOME之间的HOME环境变量冲突。
Heptite 2011年

@Heptite我也尝试为其创建一个bat文件。没运气。我收到我的问题中提到的无法生成错误。您对冲突是正确的。我没有与gvim发生冲突,但与git有冲突。cygwin下的git config --global保存到cygwin home,msysgit下的git config --global保存到Windows home。
约翰尼

Answers:


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:不要尝试将()解释为它认为意味着的任何内容。)


0

使用路径名中的空格时,通常最好将其用引号引起来。这将解决您的问题:

git config core.editor "/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe"

不幸的是没有。/ cygdrive / c / Program \ Files \(x86)/Vim/vim73/gvim.exe:/ cygdrive / c / Program Files(x86)/Vim/vim73/gvim.exe:没有这样的文件或目录错误:无法运行/ cygdrive / c / Program \ Files \(x86)/Vim/vim73/gvim.exe:无此类文件或目录错误:编辑器'/ cygdrive / c / Program \ Files \(x86)/ Vim / vim73 / gvim.exe”。虽然路径正确,但/ cygdrive / c / Program \ Files \(x86)/Vim/vim73/gvim.exe
约翰尼

抱歉,我用cygwin尝试过,但是我使用了cygwin-git软件包。你能告诉我你如何连接cygwin和msysgit吗?
p.vitzliputzli 2011年

我安装了msysgit并长时间使用了git bash。我不完全记得为什么我开始使用cygwin,但是我做的是将Git的路径(/ cygdrive / c / Program Files(x86)/ Git / bin)添加到我的cygwin $ PATH中。
约翰尼

0
#!/bin/dash -e
if [ "${1#/}" != "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=$1
fi
exec gvim ${k+"$k"}
  1. 如果没有路径,则没有路径

  2. 如果路径为空,则传递空路径

  3. 如果路径是相对的,则按原样通过

  4. 如果路径是绝对的,请转换为Windows格式

然后设置这些变量:

export EDITOR=gvim.sh
export GIT_EDITOR='dash /usr/local/bin/gvim.sh'
  1. EDITOR允许脚本与Git一起使用

  2. GIT_EDITOR允许脚本使用Hub命令

资源

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.