1. 程式人生 > 其它 >vim 從嫌棄到依賴(13)——motion 進階

vim 從嫌棄到依賴(13)——motion 進階

在最開始的時候我們介紹了一些vim中的motion 包括如何在字元間、單詞間、行間以及多行間移動。·但是motion中的內容可遠不止我們介紹的這些,平時用到的也遠不止之間介紹的那些。
之所以沒有一次介紹完,主要是不想搞那麼複雜,一次性全都介紹完那麼篇幅會顯得很長,而且顯的很複雜。vim入門最重要的一步就是用起來,如果初學者因為看到入門類的文章出現一堆不知道什麼意思的操作命令,肯定會被嚇跑的,也就無法體會到vim的魅力了。像這種進階類的內容我想將它們放到後面,等各位小夥伴能熟練使用vim完成編輯任務之後再來考慮通過進階內容進一步提高使用效率。

vim螢幕行與實際行

vim中有一個wrap 設定,表示一行文字超過多少行就會自動折行,這樣就不會出現在一個螢幕上顯示不全的問題了。在最開始配置neovim

的基礎配置的時候已經展示過該如何啟用wrap 設定,這裡就不再演示了

在啟用自動折行的設定後,如果一行文字字元數超過設定的值會自動折行。在螢幕上顯示為多行。當我們開啟了顯示行號的設定之後很容易區分。實際行在vim中只顯示一個行號,而在螢幕上會顯示多行。

我們知道行間移動使用的是j、k, 他們是在實際行之間移動,如果想要在螢幕行間移動,可以使用 gj、gk。一般針對行相關的操作,只需要在前面加上g 就可以改成在螢幕行之間的操作。例如g0 是移動游標到螢幕行行首。g$ 移動到螢幕行行尾。他們與普通的行移動motion 用法類似,即可以配合數字表示重複,也可以配合operator 來執行相應的操作。

單詞與字串

在vim中一個單詞由字母、數字、下劃線或者其他非空白字元組成,單詞間以空白字元分割。而字串是由非空白字元序列組成。這個感覺可能很抽象,但是多多聯絡和嘗試應該就很容易明白了。

字串間的移動使用大寫的WB。下面來看一個例子

e.g. there's a nvim config file in "~/.config/nvim/init.lua"


我自己總結如下:

  1. 區別單詞應該以字母、數字、其他非空白字元進行分類
  2. 字串僅僅以空白字元為區分
  3. 同一型別的字元序列組成的部分作為一個單詞。

例如上述句子由字母、空白字元和其他非空白字元(. ' ~ /)組成, e.g. 後面是一個空白字元,因此它被劃分為一個字串,而它自身經歷了字母、非空字元、字母、非空字元的序列,所以vim將他們劃分為了4個單詞。

如果這樣比較麻煩,那就簡單的記住:字串比單詞要長,不需要細粒度的移動,可以用字串間移動。

本次就說到這裡了,各位可以配合一下最開始的幾篇文章,配合使用,鞏固一下motion相關使用。