最近在夥伴們的推薦下,決定入坑 Vim,希望能藉此提升自己的開發速度,讓自己手指頭的移動範圍變小。此篇文章為近日初接觸 Vim 時,基礎指令的筆記。
➤ 模式
Vim 跟一般開發最不一樣的地方,就是它有模式的切換,會使得鍵入的按鈕有不同意義。
尚未使用 Vim 之前,選取內容、快速移動、複製或查找程式碼等非輸入文字的操作,可能都需要使用滑鼠,或是組合鍵才能達成。
透過模式操作,可以遠離滑鼠、複雜的組合鍵操作等。使開發者能夠快速依照腦中的想法操作、編輯程式碼。
Vim 常用的模式有以下四種:
- 一般模式(Normal mode)
進入 Vim 時的初始模式,可於此模式中進行開發上的操作,例如於此模式中輸入dd
可直接刪除該行。
於其他模式中,想回到此模式,可按下esc
回到此模式。 - 插入模式(Insert mode)
輸入編輯文字模式。
於一般模式中,可按下i
、I
、a
、A
等進入此模式。 - 指令模式(Command-line mode)
輸入指令模式。以:
開頭,鍵入指令,即可執行指令。例如全域取代為:%s/some/other/gc
。 - 可視模式(visual)
此模式提供操作文本的靈活方法。
於一般模式中,按下 v 或 V 鍵可進入此模式。
➤ 意義
- 表示行首
^
- 表示行尾
$
- 表示一個字
w
➤ 移動
- 左下上右移動
HJKL
(筆者一直手卡,直覺覺得是左上下右😓) - 移動至檔首
gg
移動至檔尾G
- 移到目前螢幕的最上方
H
- 移到目前螢幕的最下方
L
- 往下移動 x 行
x+enter
,例如往下移動十行10+enter
- 直接移動到第 x 行
:x+enter
,例如往下移動十行:10+enter
- 游標移動到上下一個段落
{
}
- 往其他分割視窗移動
ctrl + w + 方向鍵(HJKL)
- 移動到每一個字的自首
w
- 返回上一個字的自首
b
➤ 選取
- 選取字元
v + 方向鍵(HJKL)
- 選取行
V + 方向鍵(HJKL)
➤ 刪除相關
- 刪除整行
dd
- 刪除一個字(當前位置至結尾)
dw
- 刪除至檔首
dgg
- 刪除至檔尾
dG
- 刪除至行首
d0
- 刪除至行尾
d$
或是D
- 刪除目前選到的內容
x
➤ 複製相關
- 複製整行
yy
- 複製一個字(當前位置至結尾)
yw
- 複製至檔尾
yG
- 複製至檔首
ygg
- 複製至行首
y0
- 複製至行尾。含游標所在處字元
y$
➤ 貼上相關
- 貼至游標前
P
- 貼至游標後
p
➤ 復原
- 復原
u
➤ 其他操作
- 重複上一次動作
.
- 游標所在處之字串大小寫轉換
~
➤ 搜尋取代
假設需要將整份文件中的文字 data 取代為 form。有以下幾種方式:
- 方式一:使用指令
:%s/data/form/g
上述指令會將文件中含有 data 的字串都取代為 form。可能包含不想取代的文字。可以改使用:%s/data/form/gc
可以將查找到的字串,一個一個進行確認後再取代。 - 方式二:使用
*
搜尋,再用.
重複操作
1. 選取文件中任一個想要取代的 data 字串
2.*
表示搜尋此字串
3.cwform
其中cw
表示改變文字,改變為 form
4.esc
回到一般模式
5.n
移到下一個符合的字串
6. 確認為欲取代的文字,按下.
重複先前動作
➤ Cheat sheet
學習過程,遇到新的指令時,可以透過 Vim Cheat Sheet 快速查詢 👍
以上是今天的小筆記分享,有任何問題都歡迎留言指教,謝謝 😊 筆者要趕緊去練練卡到不行的手指頭了 😓