当gvim被设置为默认编辑器时,Git不等待用户输入



在我的gitconfig中,我将gvim设置为默认编辑器。

如果我执行git提交,编辑器将打开,并显示预期的内容,但git terminal命令已经退出,并显示"由于提交消息为空而中止",也就是说,它在继续之前没有等待gvim的响应。

类似地,如果我运行git-rebase-I,它会打开gvim,但这次文件是空的,并且rebase在后台以非交互方式进行。

在这两种情况下,如果我将编辑器设置为vim,而不是gvim,那么一切都会按预期进行。

默认情况下,gvim分叉到后台并从终端分离。最初派生的父进程几乎立即退出。

Git无法知道编辑器何时完成,只能知道它何时退出。如果它生成的进程立即退出,它会认为您已经完成了编辑,并且由于您没有保存任何内容,它会按当时的状态读取文件并中止您的提交。

如果要使用gvim,请将编辑器值设置为gvim -f-f选项可以防止编辑器分叉,因此它会一直持续到您退出,就像终端vim一样。如果出于其他原因想要设置EDITORVISUAL环境变量,这也是一个好主意;这些变量是由shell解释的,所以您可以像上面提到的那样向它们传递参数。

最新更新