當前位置:首頁 > IT技術(shù) > 系統(tǒng)服務 > 正文

vim 從嫌棄到依賴(5)——普通模式的一些操作
2022-04-19 11:15:54

通過前面幾章內(nèi)容的鋪墊,基本已經(jīng)介紹完了普通模式的大部分內(nèi)容,按照進度下面會依次介紹插入模式、命令模式、選擇模式的一些操作。根據(jù)不同模式提供功能的多少和使用頻率,篇幅會有長有短。本來這篇文章應該介紹插入模式的。但是我在整理最近寫的內(nèi)容的時候發(fā)現(xiàn)我忘記了一些不太常用但是很好用的一些小技巧,所以這篇文章我們還是停留在普通模式下。

快速翻閱文本

跳轉(zhuǎn)光標的操作,之前介紹過 h j k l w等操作,但是在閱讀代碼的時候,僅僅根據(jù)這幾個操作,效率著實有點低,即使使用類似 數(shù)字 + j/k 的方式來進行行間跳轉(zhuǎn),效率也一般。這里再介紹幾個操作

  • ctrl + f: 向下翻頁
  • ctrl + b: 向上翻頁

這里沒有什么具體的例子,各位小伙伴只需要找到一個大一點的文件試試就能看到效果
翻頁
除了使用這種翻到下一頁或者上一頁的操作之前,還可以相對于光標滾屏

  • zt: 將光標所在行移動到窗口頂端
  • zb: 將光標所在行移動到窗口底端
  • zz: 將光標所在行移動到窗口中央

相對于光標移動
這個提供兩個問題:

  1. 為什么沒有將他們放到前面跟 h j k l 這類的操作一塊講呢,當然是因為我忘記了啊。。。。這個理由雖然很重要,但是并不是主要理由。大家可以先猜猜。
  2. 既然這個操作能大幅度提高我們閱讀代碼的效率,那為什么使用頻率還會這么低呢

有興趣的小伙伴可以先不看后面的解答,自己操作一下,特別是在認真閱讀代碼的時候。可能就會有跟我下面說的一樣的體驗

好了,現(xiàn)在公布我的答案:

  1. 針對問題一,我的答案是,這幾個操作并不屬于motion 那一類,小伙伴們在試驗的時候可以仔細觀察一下光標,光標相對于窗口的位置其實并沒有發(fā)生變化。
  2. 大家在閱讀代碼的時候使用它們會不會覺得跳轉(zhuǎn)太多了,每次跳轉(zhuǎn)都感覺跟前面讀過的銜接不上呢。體驗非常不好,還不如我一直使用 jjjjjjjjj 甚至 10j 之類的操作?,F(xiàn)在我采取折中的辦法,就是翻頁的快捷鍵我用,但是我將其映射為了 10j (如何映射快捷鍵以及如何定制自己的vim在后面說)

撤銷

撤銷在普通模式下使用 u,反撤銷使用 Ctrl+r
vim的撤銷是撤銷上次修改,結(jié)合之前介紹的. 命令的部分,我們可以知道上次修改指的是從進入插入模式那一刻起到退回到普通模式為止,進行的一系列的修改。根據(jù)這個特征,我們可以很方便的定義撤銷哪些內(nèi)容。例如在寫這篇文章的時候我進入插入模式進行編寫。然后在需要構(gòu)思的地方退回到普通模式,想到了一些再次進入插入模式編輯,一旦發(fā)現(xiàn)有問題就可以在普通模式下撤銷上次的修改。

例如下面的例子:

  • 我們先使用 cw 替換一個單詞,然后刪除一行。
    修改文本
  • 使用u 恢復上一次的修改,也就是恢復刪除的一行
    撤銷修改
  • 使用 ctrl + r 執(zhí)行反撤銷,即再次刪除上次恢復的一行
    反撤銷
    uctrl+u 是操作符,它們符合之前介紹的 operat = 數(shù)字 + operator的公式,因此如果想要恢復到最開始的狀態(tài),可以使用 2u

2u 撤銷兩次修改

普通模式下對數(shù)字文本進行遞增遞減操作

假設我們這么一段代碼

var foo = 5 + i;

現(xiàn)在希望改為

var foo = 10 + i;

我們當然可以使用cw 來刪除5,然后在插入模式下寫入10。但是這里要介紹一個新的方法——使用 Ctrl + a 來在數(shù)字文本上進行遞增操作,它也是一個操作符。符合之前的公式。這里假設光標在 5 的位置,然后執(zhí)行 5 Ctrl+a 來實現(xiàn)將5這個數(shù)字文本遞增5個的操作
遞增
遞減操作使用 Ctrl x

下面請各位試試這么幾種情況:

  1. 如果光標不在數(shù)字位置,執(zhí)行 Ctrl a 會發(fā)生什么呢?
  2. 假設代碼中有不止一個位置有數(shù)字,光標也不在某個具體數(shù)字上,執(zhí)行Ctrl + a 又會發(fā)生什么呢?
  3. 當前行沒有數(shù)字,在后面幾行有數(shù)字,執(zhí)行Ctrl a 會發(fā)生什么呢?

下面公布答案
如果光標不在數(shù)字所在位置,該命令會在本行往后查找第一個出現(xiàn)數(shù)字的地方,并將光標跳轉(zhuǎn)到該處,然后執(zhí)行加1的操作。

花了這么多篇幅總算將普通模式下的一些操作說完了,后面將會進入按照順序分別講述,插入模式、選擇模式、命令模式。請感興趣的小伙伴關(guān)注一下本專欄,有想要了解的內(nèi)容也歡迎留言,等我按計劃更新完了我想寫的內(nèi)容之后會考慮安排上的,在此謝謝小伙伴的捧場

本文摘自 :https://www.cnblogs.com/

開通會員,享受整站包年服務立即開通 >