寫這篇文章是因為在更新我的一篇博客 Git的其他用法 的時候,里面的修改已經提交的commit說明
這一部分需要用到vim。
在使用git config --global --edit
或者git rebase -i commiteId^
的時候,git會進入文本編輯模式。默認的編輯器是vim,你可以在Git安裝的上層目錄\Git\usr\bin
里找到vim.exe。
這讓我想起以前使用VI(Visual Interface)和VIM(VI IMproved)編輯器時的懵逼。現在干脆把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!
。最開始的時候我不知道要輸入冒號,結果半天退不出來。
重要的說明:
在i
的說明中,你可能不太理解為什么說“將光標定位在當前字符的前面”。在vim編輯器的命令模式下,光標是覆蓋在字符上的。當你按i
,它就將光標定位到當前字符的前面。與此相對的,按a
(即append)時,光標就定位到當前字符的后面。
如圖所示:
找了半天終于找到一個不錯的在線vim編輯器:Vim.js
還有一款加載比較慢的:Interactive Vim tutorial - sandbox
點進去后你能直觀地看到光標是覆蓋到字符上的。你可以分別按i
和a
來查看效果。
至于其他命令,還是看圖比較直觀:
當然,你也可以下載vim的文檔。這里是官方文檔:vimbook-OPL.pdf
二、編輯模式
當你按i
進入編輯模式的時候,基本上就可以照常編輯文本了。
除了正常的輸入外,這些按鍵也可以正常使用:del
(往光標后刪除),back
(也就是鍵盤上的←,往光標前刪除),enter
(回車鍵),tab
(制表符)
但是注意,想要選擇字符或者復制粘貼等的時候,必須退出編輯模式,到命令行模式去執行操作。
當你想要退出編輯模式的時候,按esc
鍵。注意,這時是退到命令模式,不是完全退出。你得在命令模式輸入命令來完全退出編輯。
知道了以上這些介紹,你可以進行基本的編輯了。
三、正則表達式
在命令模式點擊 /
后,會進入搜索模式。它會搜索 /
之后的 pattern 。
在搜索和替換的時候,如果不能用正則表達式,極可能耗費大量時間。Vim 是支持正則表達式的,不過 Vim 正則表達式的寫法跟通常的寫法有點不一樣。
比如你要匹配 dekkkl
和 detttl
,你可以這么寫:
/de.\+l
這里的 /
是之前輸入的,表示搜索功能。后面的 de.\+l
是正則表達式。這里與普通的正則表達式不同的地方在于用 \+
來表示匹配一次或多次,而不是 +
。
詳細的規則可以看:VIM 正則參考
除了搜索之外,替換也能使用正則表達式。替換的語法和上面表格中的一致, text1
這個部分可以是正則表達式。
文章列表