# Git commit -番外篇vi模式 ### 是否曾經在commit時誤闖異空間“vi模式”,到底發生什麼事呢? ```shell= git add . git commit -m "訊息在此" ``` 相信經過前面介紹,以上指令都是不算把戲的小東西而已 如果你不小心只輸入 ```shell= git commit ``` 恭喜你來到了異空間“vi模式”,到底發生什麼事呢? 因為你沒有透過-m留下訊息,他就帶領你前往另外一個世界留下訊息(vi世界) ![](https://i.imgur.com/PAAsL1x.png ) 這裡也可以進行commit哦!而且可以很細緻。 畫面更細緻如下圖: 這些commit 看起來很有秩序, 視覺上像是分成有title以及內文一層層的樣子 * **Git Graph畫面中查看資訊處** ![](https://i.imgur.com/odUAMCH.png) * **GitHub** 藍色框框是透過vi模式commit,紅色框框則是commit -m ![](https://i.imgur.com/fkqFdPE.png) 既然了解差異性那我們就來看看如何下手吧 當然不想要這麼瑣碎可以還是只用```git commit -m""```, 但最起碼知道如何離開不小心闖入的```vi模式```也不錯吧。 先不說如何離開,想要還不認識這部分的朋友一起嘗試瞭解看看, 像我在幾天之前也是處於迴避且恐懼這種使用方式的人,後來我敞開心房來學習。 果然發現他真的好用,可以讓我的畫面更舒服,不因為訊息詳細而看起來很雜。 vi不管是指令還是功能都非常多,本篇就先挑關於commit 會遇到的部分來說說~ (目前也只會這個笑死) ### 需要進入 Insert 模式,才能開始打字。 進入方式為按下 「 i 」、「 a 」或 「 o 」,三選一即可 :::info 差異性為 i 是由游標的前面開始做 insert text 的動作 a 是由游標的後面開始做 insert text 的動作 o 則是在游標下方開啟新的一行來編輯 ::: 「 i 」、「 a 」,i 表示 insert,a 表示 append。 選一個開心的,因為差異根本不造成太大影響, 雖然他們差異在從游標前還是後新增,但在沒有文字下,是前是後根本沒差吧~因為我就是第一個下文字的,所以不用想太多這部分,選一個開心的。(差異性大家可以玩看看,以上是我玩過的心得,要在文字中才會覺到差異性,一開始都沒字,所以說從游標前新增,還是後根本沒差) 「 o 」就是先幫你空一行再進行編輯,我目前是不太會用到(可能我太菜) ![](https://i.imgur.com/PAAsL1x.png) 若```commit``` 訊息無法太簡短帶過, 可以透過這樣有種類似titlet與內文呈現, 剛剛學會進入編輯模式了 進來之後可以把「第一行當作是你的title」 接下來「空一行」 並輸入想要補充的內容「修正問題->成功達到即畫即呈現」 畫面會像這樣呈現 有看到紅色框框嗎,代表我是編輯模式 現在我commit訊息結束,我想要離開 要離開編輯模式 ![](https://i.imgur.com/IE6sSeK.png) ### 離開Insert 模式,完成commit,離開vi 透過"esc離開",上圖中紅色框框就會不見,,僅代表"離開編輯模式" 但離開畫面指示"離開編輯模式",你依然在vi世界裡 我們要把剛剛的訊息透過指令 "寫入存擋w" 再 "離開q" 搭配冒號-> :wq ,就完成啦 :::info ```esc```只離開編輯模式,還在vi世界中 ```:w``` 寫入存檔 ```:q``` 離開 ```:wq```存檔&離開 ::: ![](https://i.imgur.com/aw1VStk.png) ```:wq```寫入存檔離開後,終端機就恢復平常狀態啦 來看看Git Graph畫面 以上就是**在vi模式中commit,讓你的commit更細緻更整齊** ![](https://i.imgur.com/au56mKw.png) ### 如果你只想要離開vi不想要編輯 就不需要進什麼編輯模式, 不要湊熱鬧按什麼a、i、o那些,**請直接:q** ###### tags: `vi` `git` `gitHub` ### 更多豐富資料請參考 [超簡明 Vim 操作介紹](https://gitbook.tw/chapters/command-line/vim-introduction) [BryceHappy/vi 指令](https://gist.github.com/BryceHappy/2d8c603a72e3ca342c9ad7f36f485c74)