Vim技能修煉教程 4 基本功

2021-09-23 14:40:10 字數 1516 閱讀 4720

前面我們學會了外掛程式管理器和如何實現語法高亮,相信大家已經從中體會到了vim外掛程式的強大功能。現在,是時候回來補一補基本功了。

vi有三種主要模式,正常模式,插入模式和視覺化模式。正常我們推薦的方式是所有的移動命令只在正常模式下進行,只有在修改的時候再進入插入模式。

這個切換是如此頻繁,所以vi提供了很多快速切換模式的命令。vim的難學之處之一就是命令太多。

如《practical vim》中第8條所說,正常模式和插入模式的切換,可以為撤銷編輯帶來方便。在沒有模式切換的文字編輯器中,編輯器是很難確實您撤銷一次是打算撤銷乙個字元,或者是乙個單詞還是更大的粒度。而在vi中,這不是問題,在輸入時進入插入狀態,輸入結束了就esc退回正常模式。這一過程就構成了一次可撤銷的動作。

行內移動

跨行移動

vi還支援跳轉的書籤功能,使用m[a-z]命令,可以定義26個書籤。

按單詞移動

滾動一整屏

重新調整螢幕位置

重繪螢幕

在當前螢幕中移動

在繼續學習更多命令之前,我們先看一下vi命令之所以強大的原因,因為vi的命令並不僅僅是簡單的單獨命令,而是可以進行組合。

vi命令的一般格式是: 或者

上面學習的c命令就是很好的例子,比如c2b,c是命令,2是兩次,b是後退

同樣,對於用於刪除的d命令,刪除當前單詞,就把cw換成dw就可以了。d$是刪除從游標到行尾。與c是c$的別名一樣,d是d$的別名。

複製命令y,也是同樣的用法。

在vim中,文字移動命令被擴充套件成文字物件。

最常用的文字物件命令有:

這時候我們有三大利器可以使用:

另外,我們還可以通過c-o + 正常模式的命令這種方式來節省切換的動作。

全文搜尋

vi的強大之處在於,搜尋的結果仍然可以跟其他命令結合,比如跟d結合刪除。

行內搜尋

搜尋仍然是可以跟操作命令結合,比如df,刪除到某字元為止的內容。

當我們使用d命令刪除一段文字時,它們會被依次存入0-9號這10個緩衝區中。除了這10個自動緩衝區之外,vi還支援a-z一共26個命名的緩衝區。

我們使用雙引號"用來指示對緩衝區的訪問。比如:"2p,將2號緩衝區的內容貼上到當前游標處。

不過,記住自動放到哪個緩衝區位置還是一件***的事情,更好的辦法是,使用命名的緩衝區。vi提供了26個命令緩衝區,分別用a-z 26個字母表示。

從此我們的剪下、複製和貼上的功能就更豐富了。比如"add,將當前行剪下放入a緩衝區。貼上時使用"ap。再如:"b10yy,將當前開始的10行複製到b緩衝區。

vi作為乙個功能過剩的編輯器,當然不只這麼簡單了。它還支援對於緩衝區的內容進行追加,方法很簡單,使用緩衝區的大寫字母名移,比如"byy,將當前行追加到b緩衝區內容的末尾。

這個黑科技太好玩了,如果游標處是乙個數字的話,可以通過c-a來對其進行+1操作,c-x進行-1.

如果要多加減幾次,就先給個數字就好了。

這還不夠黑科技,c-a和c-x還有搜尋功能,如果當前游標不是乙個數字,vim會先搜尋到下乙個數字,再對其進行操作。對於大量數字文字要操作的情況,實在是太方便了。

07 修煉基本功 條件與迴圈

目錄 1.條件語句 2.迴圈語句 3.條件與迴圈的復用 4.總結 1 if x 0 不能在條件語句中加括號,在條件語句末尾必須加上冒號,python不支援switch語句,當存在多個條件判讀時,需要用else if 來實現。將這個表示式分解開來,就等同於下面的巢狀結構 for item in ite...

Vim技能修煉教程 7 可視模式

可視模式是與正常模式 插入模式一起並列的模式。它的作用就像圖形化編輯器下用滑鼠來選擇乙個塊。在vim下,使用正常模式和ex命令,連搜帶跳行的,未必就比用滑鼠慢。我們先做乙個例子找找感覺,體驗一下vim中可視模式的用法。我們假設這樣一段 include int main int argc,char a...

Vim技能修煉教程 17 編譯自己的Vim

前面我們已經對vim有比較豐富的了解了。我們也知道vim有很多編譯時的選項,很多功能依賴於這些編譯選項。其中最重要的就是指令碼語言的支援,很多發行版本是不全的。為了支援我們所需要的功能,我們需要編譯自己的vim.git clone以ubuntu為例,首先要安裝一些庫的開發包,例 sudo apt g...