【问题标题】:How do I exit Vim when doing a Mercurial commit at the command line?在命令行执行 Mercurial 提交时如何退出 Vim?
【发布时间】:2025-12-24 15:45:10
【问题描述】:

我在运行 OS X v10.6(Snow Leopard)的 Mac 上。我安装了 Mercurial 1.1。

在我按 Esc 退出插入模式后,我不知道如何保存和退出。点击 Ctrl + C 会显示输入“quit”会写入和退出的指令,但它似乎不起作用。

【问题讨论】:

    标签: mercurial terminal commit vi


    【解决方案1】:

    :q[uit] 退出。

    :w[rite] 保存。

    :wq 是两者的快捷方式

    :!command 在 shell 中运行命令(您可以使用它来提交而无需离开 Vim)

    【讨论】:

    • 在我的情况下,VIM 告诉我:“--INSERT-- 录制”。按下 ESC 会在 mac 上发出“错误”声音。键入任何类型的命令都没有任何效果。我不想退出整个终端。只是 VIM。
    • 这根本不做任何事情
    【解决方案2】:

    知道这一点也很有用

    :q!
    

    退出 vi 而不保存,Mercurial 将其解释为您放弃签入。如果您正在编辑提交消息并突然意识到您需要做其他事情,这可能会很有用。

    【讨论】:

    • 这正是我所需要的:)
    【解决方案3】:

    点击“Esc”退出插入模式后,您还可以输入“ZZ”,将文件写入磁盘并退出。

    【讨论】:

    • 我自己尝试过,但没有成功,直到我阅读了您的答案并意识到我应该将 Z 输入为大写字母:shift +zz!
    • 它来自大小写重要的 Unix。因此,输入“Z”与输入“z”是不同的。
    【解决方案4】:

    Kokodoko's said:

    在我的情况下,VIM 告诉我:--INSERT-- recording。按下 ESC 会在 mac 上发出“错误”声音。键入任何类型的命令都没有任何效果。我不想退出整个终端。只是 VIM。

    我遇到了同样的问题,但这对我有用(如果这有什么不同的话,我在 Mac 上)。

    1. 在 Vim 中按 Esc
    2. 键入 : - 这会将您带到终端底部的提示符。
    3. 输入 q!,然后按 Enter 键。

    这应该会让你在不保存的情况下退出 Vim。

    好痛啊。

    【讨论】:

    • 鉴于这篇文章是对一个答案的评论的回应,或许可以证明它有资格作为问题的答案?
    【解决方案5】:

    上面的回答是对的。对于那些像我一样需要在步骤中了解更多细节的人:

    如果显示 --Insert-- 并且您不知道如何退出,请先按 Esc 一次,然后输入 :w 保存,:q 退出不保存,:wq 两者都做,然后按 Enter。我必须执行:wq 才能完全退出文件并返回命令行。

    *注意:您必须输入 ':'。

    【讨论】: