vim編輯器有兩種模式:輸入文本模式,輸入命令模式。
常用命令:
- 插入文本模式:
$ i
- 退出插入文本模式:
$ Esc
- 命令行模式:
$ : (英文輸入法下)
- 保存文本:
$ :w 文件名
- 退出vim:
$ :q[退出] q! [強(qiáng)制退出] 或是 wq! [保存并強(qiáng)制退出],適合對(duì)已經(jīng)存在的文件。
注意:首先進(jìn)入命令行模式,輸入這些命令才管用。
- 強(qiáng)制存盤(pán)寫(xiě)入
保存并退出時(shí)報(bào)錯(cuò):E37: No write since last change No write since last change
$ :w!
命令解釋?zhuān)?/p>
w :write
q :quite
i:insert
案例:
1.刪除某次提交記錄
比如我的提交歷史如下,我現(xiàn)在想刪除commit_B,但是不影響commit_B之后的提交歷史
commit_C
commit_B
commit_A
- 首先找到commit_B提交之前的一次提交的commit_A
- 執(zhí)行如下命令
git rebase -i commit_A - 此時(shí)光標(biāo)會(huì)停留在你想刪除的commit_B前,按下delete鍵刪除 pick,然后 按下
i鍵,進(jìn)入insert 插入文本模式。輸入 "drop" 然后。:q發(fā)現(xiàn)退出不成功。報(bào)寫(xiě)入失敗的錯(cuò)誤E37:No write since last change (add ! to override)。此時(shí)則需要強(qiáng)制寫(xiě)入輸入:w!完成寫(xiě)入動(dòng)作。然后再:q退出vim。
2023-09-27.140342.png - 最后一步,執(zhí)行
git push -f - 如果是一個(gè)多人合作的倉(cāng)庫(kù),建議別人把本地倉(cāng)庫(kù)刪除。重新clone 一份遠(yuǎn)程倉(cāng)庫(kù)到本地。
- git log 發(fā)現(xiàn)成功刪除了那一條記錄。
2.使用vim寫(xiě)一個(gè)test.txt文本文件。
進(jìn)入vim編輯器
$ vim
效果如圖:
眼睛注意兩個(gè)區(qū)域

image.png
文本編輯模式
$ i
此時(shí)輸入一個(gè) i 進(jìn)入了插入文本模式

image.png
$ 輸入內(nèi)容

image.png
$ 按下 Esc鍵

image.png
進(jìn)入命令行模式,注意,這里輸入法必須是英文模式下,才能輸入進(jìn)去這個(gè)冒號(hào)
$ :
然后,保存內(nèi)容到 test.txt文件中。
$ :w test.txt 然后回車(chē)

image.png
然后回車(chē)后:

image.png
然后再次進(jìn)入命令行模式
$ :
再輸入 q ,然后回車(chē)退出vim
$ :q
當(dāng)然,這個(gè)文件要是不想要,可以直接輸入 q! ,那么就直接退出vim。
