今天的筆記內容為 Practical Vim: Edit Text at the Speed of Thought 第八章的讀後筆記。是筆者覺得非常實用的一章節,也解決了許多目前筆者使用 Vim 最常遇到的困境。
Vim 的方向控制為 hjkl
。但如果僅使用 hjkl
可能會耗費許多力氣才能移動到想要的地方,因此依照情境善用不同語法移動,是非常重要的!
➤ 區分實際行與螢幕行
有時程式碼瀏覽範圍短或是程式碼太長時,可能無法在單行範圍呈現完整內容,因此實際的一行,以肉眼看可能不止一行。
實際的行稱為實際行;肉眼看到的行稱為螢幕行。以下方程式碼為例, <label for="password">輸入新密碼</label>
為實際的一行。而肉眼來看會是兩行螢幕行。
使用 Vim 的方向控制為 hjkl
,只能控制實際行,因此在行 17 中,<label
的位置,使用往下 j
鍵, 會跑到真正的第 18 行。而不是肉眼看到的下一行 </label>
。
如果想要控制螢幕行,可以在指令前加上 g,即可控制螢幕行。例如上述範例即可使用 gj
移動到下一行 </label>
。
➤ 區分單詞與字串
在快速移動中,必須要理解重要的兩個單位:單詞與字串。
- 單詞:一個單詞由字母、數字、底線或其他非空白字串組成,之間以空白分隔,使用
w
控制單詞。 - 字串:非空白字串組成,之間以空白分隔。使用
W
控制字串。
如下範例,w
的控制包含Hi
,
I
‘
m
Lai
.
等七個單詞。W
的控制包含 Hi,
I’m
Lai.
等三個字串。
Hi, I'm Lai.
使用 c
指令修改內容時,通常會想要保留標點符號、空白,適合搭配 w
使用。使用 d
指令刪除內容時,通常會想要一併刪除標點符號、空白,適合搭配 W
使用。
➤ f{char} 指令
f{char} 指令可以快速移動到欲查找的字符。若找到了會快速移動,若找不到,會停留在原位置。
例如,當光標在 H
時,輸入 fI
,可快速移動到 I’m
的 I
上。
Hi, I'm Lai.
若想找尋下一個,可使用 ;
重複查詢。使用 ,
可退回上一個。
➤ t 指令
t 有till直到的意思。
若想刪除 I’m Lai
,可將光標移動至 I
,接著按下 dt.
Hi, I'm Lai.
➤ 精確的選擇
在寫 code 的過程中,常常會出現成對的標誌,例如 []
、{}
、<>
、""
、''
等。在可視模式中可以快速選取並操作。
i
:成對標誌內部的內容。a
:包含成對標誌及內部的內容。
let displayText = "hi, I'm Lai.";
以上述為例,當光標停留在 h
時。
按下 va"
,可選取 "hi, I’m Lai."
。按下 vi"
,可選取 hi, I’m Lai.
。其它成對標誌都可同理使用。搭配 c
指令、y
指令、d
指令就可以針對準確的範圍進行操作了!
其中 ( ) 可使用 b 代替,{ } 可使用 B 代替。可以更快速的選取。
以上是今天的小小的筆記分享,有任何問題都歡迎留言指教,謝謝 😊