为什么 VIM 中的 `:Wq` 会导致我的提交稍后失败?

Why does `:Wq` in VIM cause my commit to fail later?

通常当我在 VIM 中写完提交消息时,我输入 :Wq<ENTER> 而不是 :wq<ENTER> 因为我按住 shift 键输入冒号。这导致 VIM 响应 E492: Not an editor command: Wq

到目前为止一切正常,我只是重新键入 :wq<ENTER> 以保存提交消息并退出 VIM。但是,然后提交不起作用,终端显示如下内容:

$ git commit
$ error: There was a problem with the editor 'vi'.
$ Please supply the message using either -m or -F option.

为什么在执行正确的 :wq<ENTER> 之前意外输入 :Wq<ENTER> 会导致提交失败?输入 :Wq<ENTER>?

后有什么方法可以让提交发生?

This article 似乎描述了类似的问题。

当您使用大写 'W' 时,Vim 在被 Git 调用时似乎正在退出并显示错误代码。

你试过了吗:

git config --global core.editor /usr/bin/vim

(或您的系统上安装了 vim 的任何地方)...这似乎解决了问题。必须与 Git 如何调用 Vim.

有关

另请参阅 this question,这表明它可能与 filetype 设置有关。

我无法重现这个问题。也就是说,我能够得到 E492: Not an editor command: Wq 错误,但是 运行ning :wq 之后成功关闭 vim 并保存了提交.

也许你可以尝试类似这个答案的东西 -

:command WQ wq
:command Wq wq
:command W w
:command Q q

将这四个 "aliases" 保存到 ~/.vimrc 中的文件中,如果您不小心再次 运行 :Wq,它不会出错。

此外,正如上面提到的 Jonathan.Brink,请确保您实际使用的是 vim 而不是vi,因为这也可能导致一些问题。