寫這篇文章是由於在更新個人一篇博客 Git的其餘用法 的時候,裏面的修改已經提交的commit說明
這一部分須要用到vim。html
在使用git config --global --edit
或者git rebase -i commiteId^
的時候,git會進入文本編輯模式。默認的編輯器是vim,你能夠在Git安裝的上層目錄\Git\usr\bin
裏找到vim.exe。git
這讓我想起之前使用VI(Visual Interface)和VIM(VI IMproved)編輯器時的懵逼。如今乾脆把vim的基本使用整理出來。github
vim編輯器有兩種模式,分別爲命令模式
和編輯模式
。正則表達式
當你剛進入文本編輯器的時候,處於編輯器的命令模式。這個命令模式能夠作不少事情。這裏介紹幾個經常使用的:vim
命令 | 對應英文單詞 | 說明 |
---|---|---|
i |
insert | 進入編輯模式,將光標定位在當前字符的前面 |
v |
visual mode | 按一下v至關於你平時在MS Word裏面按住shift,用來選擇(高亮)一段文本 |
y |
yank | 和複製的功能同樣(英文意思爲:猛拉) |
p |
paste | 粘貼到當前字符前面 |
x |
x就是"叉"(或者「幹掉」)的意思 | 刪除被高亮的字符(光標所在的字符也算是被高亮的字符) |
yy |
yank | 複製光標所在行 |
dd |
delete | 刪除光標所在行 |
u |
undo | 撤銷上一個修改 |
ctrl + r |
redo | 不當心撤銷過多的時候使用 |
/想搜索的字符串 |
/ 以後無空格,按Enter鍵開始搜索。按n (即next)往下搜索,按N 往上搜索 |
|
:1,$ s /text1 /text2 /c |
substitute | 把text1 替換成text2 。1,$ 表示行數範圍,其中 $ 表示文檔末尾。當你把數字1 換成小數點. 時,表示從當前位置開始搜索(跟 bash 中用 . 表示當前位置同樣)。/c 表示讓你選擇找到以後的動做:y (yes)表示替換當前所選;n (next)表示跳過當前所選;a (all)表示當前所選及剩下的所有替換,再也不確認;q (quit)表示中止替換。注意前面的冒號,與下面的命令相似。 |
:q! |
quit discard | 捨棄修改並退出 |
:wq |
write then quit | 保存修改並退出 |
看到:q!
這個命令,可能有點懵圈。你沒看錯,得先輸入一個冒號:
,再去輸入q!
。最開始的時候我不知道要輸入冒號,結果半天退不出來。bash
重要的說明:
在i
的說明中,你可能不太理解爲何說「將光標定位在當前字符的前面」。在vim編輯器的命令模式下,光標是覆蓋在字符上的。當你按i
,它就將光標定位到當前字符的前面。與此相對的,按a
(即append)時,光標就定位到當前字符的後面。app
如圖所示:編輯器
找了半天終於找到一個不錯的在線vim編輯器:Vim.js
還有一款加載比較慢的:Interactive Vim tutorial - sandboxui
點進去後你能直觀地看到光標是覆蓋到字符上的。你能夠分別按i
和a
來查看效果。google
至於其餘命令,仍是看圖比較直觀:
固然,你也能夠下載vim的文檔。這裏是官方文檔:vimbook-OPL.pdf
當你按i
進入編輯模式的時候,基本上就能夠照常編輯文本了。
除了正常的輸入外,這些按鍵也能夠正常使用:del
(往光標後刪除),back
(也就是鍵盤上的←,往光標前刪除),enter
(回車鍵),tab
(製表符)
可是注意,想要選擇字符或者複製粘貼等的時候,必須退出編輯模式,到命令行模式去執行操做。
當你想要退出編輯模式的時候,按esc
鍵。注意,這時是退到命令模式,不是徹底退出。你得在命令模式輸入命令來徹底退出編輯。
知道了以上這些介紹,你能夠進行基本的編輯了。
在命令模式點擊 /
後,會進入搜索模式。它會搜索 /
以後的 pattern 。
在搜索和替換的時候,若是不能用正則表達式,很可能耗費大量時間。Vim 是支持正則表達式的,不過 Vim 正則表達式的寫法跟一般的寫法有點不同。
好比你要匹配 dekkkl
和 detttl
,你能夠這麼寫:
/de.\+l
這裏的 /
是以前輸入的,表示搜索功能。後面的 de.\+l
是正則表達式。這裏與普通的正則表達式不一樣的地方在於用 \+
來表示匹配一次或屢次,而不是 +
。
詳細的規則能夠看:VIM 正則參考
除了搜索以外,替換也能使用正則表達式。替換的語法和上面表格中的一致, text1
這個部分能夠是正則表達式。