使用git commit -a和vim进行提交

125
我对git还很陌生,所以我决定使用github的教程来学习git。第三章中写道:

“首先我们将通过修改README文件并在项目中添加自己作为作者来进行这个示例。所以我们只需要编辑该文件即可。现在我们想要提交这个更改,所以我们运行 git commit -a 命令。”

当我使用 git commit -a 命令时,终端会打开一个vim编辑器,我写完消息后不知道如何从终端关闭它。我该如何保存消息并关闭vim?

答:您可以遵循以下步骤在vim编辑器中保存和退出:
1. 按下Esc键确保您处于命令模式。 2. 输入冒号(:)进入命令行模式。 3. 输入wq并按Enter键,这将把更改写入文件并退出vim编辑器。如果您只想保存更改并保持vim编辑器打开,请输入:w并按Enter键。

9
这张图形化的速查表非常有用:http://www.viemu.com/vi-vim-cheat-sheet.gif。我把它当作我的电脑桌面壁纸。 - yasouser
@Jean - 你在哪个平台上,是使用控制台还是图形界面Vim?启动屏幕上没有显示版本号、作者等介绍文字吗? - Rook
这个回答解决了你的问题吗?在终端中使用Git commit命令打开VIM,但无法返回终端 - mkrieger1
7个回答

208
  1. 在vim中,处于normal mode(按下Esc进入normal mode)的情况下,你可以使用:wEnter来保存文件。
  2. 同样处于normal mode时,你可以使用:q来关闭文件。

你也可以同时进行以上两个操作,使用Esc:wqEnter来保存并退出vim。

作为替代方法,你也可以在normal mode下按下ZZ,这将保存文件并退出vim。对一些人来说这可能更加方便,因为只需要按两次相同的键。


28
你也可以使用命令 git commit -a -m "在此输入你的提交信息" ,这样就不会启动VIM编辑器。 - David Basarab
9
@David:当然。这里很多问题都是因为人们忘记了“-m”选项,然后被扔进vim窗口里而不知道如何退出。 - user616736
4
您可以使用Ctrl+C进入正常模式。另外,按Shift+(Z+Z)可以保存并退出(两个大写字母Z)。 - gen_Eric
1
@Rocket:你说得对。我没有意识到我输入了“z”而不是“Z”。 - user616736
5
@EEva说:“是的,但我不想教新手那个,因为如果他们忘记了 :,那么他们就会开始删除字符,然后导致恐慌2。” - user616736
显示剩余2条评论

70

不要试图学习vim,而是使用其他更容易的编辑器(例如nano)。 尽管我喜欢vim,但我认为在这种情况下使用它并不是最佳解决方案。需要花费时间和精力才能掌握它。

git config core.editor "nano"

63
很有趣;Ubuntu 默认使用 nano,我不知道如何保存,所以我使用了你的命令切换到 vim。 - hyperslug

12

你也可以按照这个答案来退出vim https://dev59.com/7G025IYBdhLWcg3wST6Q#6098842 - David Basarab
虽然这是真的,但不建议这样做 - Jorge Leitao

8
更好的问题是:当我退出vim时,如何中断提交?
有两种方法:
  1. :cq:cquit
  2. 删除提交消息的所有行,包括注释,然后使用:wq
无论哪种方式都会给git一个错误代码,因此它不会继续进行提交。这在使用git commit --amend时特别有用。

顺便提一下,我记得这是无线电术语。在《接触》开始时,艾莉(珍娜·马龙饰)在父亲去世后告诉宇宙,“CQ CQ CQ”。这意味着“呼叫所有站点”。 - cdunn2001

6

1

要退出,请按 :q。

如果您想不保存退出,可以按 :q!。

在谷歌上搜索“vim cheatsheet”可以提供一个参考,您应该打印出一个快捷方式的集合。

http://www.fprintf.net/vimCheatSheet.html


0

兄弟,按照以下步骤操作: 第一步

点击 Esc - 退出插入写作模式

第二步 按下 shift+;

第三步 最后输入 wq 并按回车键

wq 用于保存并退出


谢谢“兄弟”,但这个问题是11年前创建的。 - Jean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接