Vim 學習筆記 — 移動

學習如何在 Vim 裡面快速移動

Lai
UnaLai
Oct 25, 2020

--

今天的筆記內容為 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. 等三個字串。

使用 c 指令修改內容時,通常會想要保留標點符號、空白,適合搭配 w 使用。使用 d 指令刪除內容時,通常會想要一併刪除標點符號、空白,適合搭配 W 使用。

➤ f{char} 指令

f{char} 指令可以快速移動到欲查找的字符。若找到了會快速移動,若找不到,會停留在原位置。

例如,當光標在 H 時,輸入 fI,可快速移動到 I’mI 上。

若想找尋下一個,可使用 ; 重複查詢。使用 , 可退回上一個。

➤ t 指令

t 有till直到的意思。

若想刪除 I’m Lai,可將光標移動至 I,接著按下 dt.

➤ 精確的選擇

在寫 code 的過程中,常常會出現成對的標誌,例如 []{}<>""'' 等。在可視模式中可以快速選取並操作。

  • i:成對標誌內部的內容。
  • a:包含成對標誌及內部的內容。

以上述為例,當光標停留在 h 時。

按下 va",可選取 "hi, I’m Lai."。按下 vi",可選取 hi, I’m Lai.。其它成對標誌都可同理使用。搭配 c 指令、y 指令、d 指令就可以針對準確的範圍進行操作了!

其中 ( ) 可使用 b 代替,{ } 可使用 B 代替。可以更快速的選取。

以上是今天的小小的筆記分享,有任何問題都歡迎留言指教,謝謝 😊

--

--

Lai
UnaLai

我是一名前端工程師,我熱愛學習與分享 ❤︎