2011-05-23 148 views
93

我是git的新手,所以我決定使用github的教程學習git。第三章說:使用git commit -a和vim

「對於第一個例子,我們將修改README文件以將自己添加爲項目中的作者,因此我們只需編輯該文件,現在我們要提交該更改,所以我們運行git commit -a命令。「

當我使用git commit -a命令時,控制檯打開一個vim,我寫了我的消息,但是我不知道如何從控制檯關閉這個vim編輯器。我如何保存消息並關閉vim?

+9

該圖形備忘單非常有用:http://www.viemu.com/vi-vim-cheat-sheet.gif。我用它作爲我的桌面壁紙。 – yasouser 2011-05-23 17:47:55

+0

@Jean - 你在哪個平臺上,並使用控制檯或GUI Vim?你沒有在開始屏幕上看到介紹性文字(版本號,作者等)嗎? – Rook 2012-02-14 01:45:17

回答

166
  1. 在vim中,將文件保存與:瓦特輸入,而在正常模式(你按Esc即可進入正常模式)。
  2. 關閉文件q而在正常模式下。

您可以結合這兩個動作,並做Esc鍵:瓦特q輸入保存提交和退出Vim。

作爲替代上述,也可以按ŽŽ而在正常模式下,這將保存文件並退出Vim。這對於一些人來說也更容易,因爲它是兩次按下相同的按鍵。

+21

你也可以做git commit -a -m「你的消息在這裏」,它不會帶來VIM。 – 2011-05-23 14:55:23

+7

@David:當然。這裏有很多這樣的問題是因爲人們忘記了'-m'選項,然後被扔進一個vim窗口並且不知道如何離開。 – abcd 2011-05-23 14:57:36

+2

@yoda:你也可以使用ctrl + c進入正常模式。另外,Shift +(z + z)保存並退出(兩個大寫的Z)。 – 2011-05-23 14:58:37

10

看到這個線程的解釋:VIM for Windows - What do I type to save and exit from a file?

正如我寫的有:學習Vimming,你可以使用的快速參考卡之一:

另請注意How can I set up an editor to work with Git on Windows?如果你不習慣使用Vim,但想使用另一個編輯你的提交消息。

如果你的提交信息不是很長,你也可以輸入

git commit -a -m "your message here" 
+0

你也可以按照這個答案擺脫vim http://stackoverflow.com/questions/6098742/using-git-commit-a-with-vim/6098842#6098842 – 2011-05-23 14:56:06

+0

雖然這是真的,[這是不可取的](http://robots.thoughtbot.com/post/48933156625/5-useful-tips-for-a-better-commit-message)。 – 2013-09-21 07:05:08

1

要退出命中:q會讓你退出。

如果你想退出而不保存,你可以點擊:q!

在「vim cheatsheet」上的谷歌搜索可以爲您提供一個參考,您應該使用快捷鍵集合打印出來。

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

50

,而不是試圖去學習VIM,使用不同的更容易編輯器(如納米,例如)。 就像我喜歡vim一樣,我不認爲在這種情況下使用它是解決方案。它需要專注和時間來掌握它。

git config core.editor "nano" 
+45

這很有趣; nano在Ubuntu上是默認的,我不知道如何保存,所以我用你的命令切換到vim。 – hyperslug 2012-09-11 02:50:31

+0

@hyperslug,我也是。 – Dubby 2015-10-09 00:39:27

+0

對另一個問題的有用答案。但爲什麼這裏有什麼upvotes呢?它具體做**不回答OP的問題。 – DaveBoltman 2017-02-08 10:18:56

6

更好的問題是:當我退出vim時,如何中斷提交?

有2種方式:

  1. :cq:cquit
  2. 刪除提交信息,包括註釋的所有行,然後:wq

無論哪種方式會給git的錯誤代碼,所以它不會繼續提交。這對git commit --amend特別有用。

+0

順便說一句,我記得這是從Ham無線電行話中得來的。 *聯繫人*開始時,她的父親去世後,年輕的艾莉(耶拿馬龍)告訴宇宙「CQ CQ CQ」。這意味着,[「呼叫所有電臺」。](https://en.wikipedia.org/wiki/CQ_(電話)) – cdunn2001 2016-07-11 17:23:23