有一個段子。前端
如何快速學會游泳?git
只須要三步,騙到河邊,踢下水,用竹竿戳遠點。github
那如何快速學會 vim 呢?正則表達式
默認編輯器設爲 vim,刪掉其餘一切編輯器,明天上線。typescript
如下是可以在 零配置零插件 下快速使用 vim 的一系列步驟,只須要多加練習,便能快速熟練使用 vim。 無他,惟手熟爾。vim
原文連接見 山月的博客app
快速移動是 vim 的重中之重,比一切插件都要重要。也是下編輯和修改的基礎。編輯器
上(k)下(j)左(h)右(l) 移動,須要注意,禁止使用上下左右箭頭 若是須要移動數行,能夠在操做前加數字。如 10j
表明往下移動十行。 經過數字與操做結合,這是 vim 的思想。post
減小上一步的左右移動,效率過低,使用 b, B, w, W
代替 b
指 back a word,退回一個單詞。w
指 forward a word,前進一個單詞。 B
指 back a WORD,退回一個大單詞。w
指 forward a WORD,前進一個大單詞。ui
其中,word 以及 WORD 的區別,以一個示例說明。 hello.world 有三個 word ('hello', '.', 'world'),卻只有一個 WORD。
使用 f, F, t, T
進行更爲精細的左右移動控制 f
指 find a character,快速移動到下一個字符的位置,F
指向前查找。結合 b, w
實現快速左右移動。 t
指 tail a character,快速移動到下一個字符位置的前一個字符,T
指向前查找。
使用 0, $
進行行首行尾移動
使用 %
快速移動到配對字符 如從左括號快速移動到右括號,左引號快速移動到右引號,在編碼中最爲經常使用!
使用 <Ctrl-d>,<Ctrl-u>
進行大範圍上下移動 <Ctrl-d>
往下移動半頁,<Ctrl-u>
往上移動半頁。
也可使用
<Ctrl-f>, <Ctrl-b>
進行整頁移動。
使用 gg, G
進行首行尾行移動
:128
表示快速定位到 128 行,目前只在 debug 中使用
zz
快速定位當前光標至當前屏幕中間,zb
定位當前光標至屏尾,zt
定位當前光標至屏首
*
定位當前光標下的單詞,並指向下一個,#
指向上一個
gd
在編碼中經常使用,定位當前變量的申明位置,gf
定位到當前路徑所指向的文件。
最後若是你發祥定位錯了,可使用 <Ctrl>-o
回到光標的上一位置
vim 的編輯在 Insert Mode
,以上的快速移動是在 Normal Mode
。編輯文本須要首先進入 Insert Mode
。
i, I, a, A, o, O
進入 Insert Mode
。
i
指 insert text,在該光標前進行編輯,I
指在行首進行編輯。 a
指 append text,在該光標後進行編輯,A
指在行尾進行編輯。 o
指 append text,在該光標後一行進行編輯,O
指在光標前一行進行編輯。
我的習慣,i, A, o, O
用的多一些,I, a
基本不用。
Esc
以及 <Ctrl-[>
均可以退出 Insert Mode
。
我的習慣使用 <Ctrl-[>
,一來 Esc
過遠,二來在一些編輯器中 Esc
容易與其它熱鍵衝突。
刪除也能夠在 Insert Mode
使用 delete
鍵進行手動刪除,不過效率過低,建議通常在 Normal Mode
進行刪除,剛進入 vim 的狀態即是 Normal Mode
。
使用 x(dl)
刪除特定字符 能夠結合 x
以及上述所講的快速移動,刪掉光標下的特定字符
在括號裏標註 l
,意指 x
爲 dl
的簡寫。
d
指 delete
,表示刪除,是全部修改操做的基礎。dl
由 d
和 l
兩個操做組成,表明刪掉光標右側的字符,同理,dh
表明刪掉光標左側的字符,這是全部刪除的基本形式,也是 vim 的核心思想。
使用 daw
刪除特定單詞
daw
指 delete a word
,表示刪除特定單詞。一樣也可使用 db, dw
來刪除單詞。
使用 dt, df
加特定字符,刪掉字符前的文本
使用 di(, da(
刪除特定符號內的文本,如刪除括號,引號中的文本
di(
指 delete in (
,不會刪掉括號。da(
指 delete a (
,會連同括號一同刪掉。同理還有 di'
,di"
等,在編碼中最爲經常使用!
使用 D (d$)
刪除掉該字符之後的全部文本
使用 dd
刪掉整行
把以上操做的全部 d 替換爲 c,表示刪除後進入編輯模式
c
指 change
,表示刪除,如 d
同樣,是 vim 的基本動詞
使用 r
加特定字符,表示使用特定字符代替原有字符
使用 :Ex (Explore)
瀏覽目錄
定位到文件所在行,回車進入指定文件
使用 :ls
列出緩衝列表
緩衝列表中保存最近使用文件,行頭有標號
使用 :bn
進入最近使用文件
bn
指 buffer next
,進入緩衝列表的下個緩衝,即最近一次使用文件
使用 :b[N]
進入緩衝列表中標號爲 N 的文件
b 10
指 buffer 10
,進入緩衝列表,即最近一次使用文件
使用 :sbn, :vbn
在新窗口打開最近使用文件
s
指 split
,水平方向。 v
指 vertical
,垂直方向。
使用 :on(ly)
只保留當前窗口
基本操做指查找,替換,撤銷,重作,複製,粘貼,保存等
/{pattern}
查找 /
後加須要查找的詞或者正則表達式進行查詢,n
向下查詢,N
向上查詢。
:s/aa/bb/g
替換 s
指 substitute
的縮寫,替換,g
表明全局替換。
u
撤銷 u
指 undo
的縮寫,撤銷。可與數字結合進行屢次撤銷。
<Ctrl-r>
重作
yy
複製整行 y
指 yank
,複製。使 y
與快速移動結合起來,可使用多種狀況的複製,如複製括號中內容,複製引號中內容。
複製時,會把當前內容置入寄存器,使用 :reg
查看寄存器列表。
p
粘貼 p
指 paste
,粘貼。
"*y
複製內容至系統剪切板
:reg
會列出寄存器列表,"*
寄存器表明系統剪切板(),因此以上就是把內容放到系統剪切板。
若是寄存器列表中沒有該寄存器,則 vim 不支持系統剪切板,也可使用命令 vim --version | grep clipboard
。
"*p
粘貼系統剪切板中內容
關於配置,推薦一下 amix/vimrc ,在 github 上超過一萬四千顆星。
另外,再推薦下個人配置 shfshanyue/vim-config,其中有一些插件,如 emmet
和 typescript
很是適合前端開發。
關注公衆號山月行,記錄個人技術成長,歡迎交流