技巧 Vim 的縱向編輯模式

2022-03-24 17:23:20 字數 4450 閱讀 2494

人類大腦對文字的處理是平面式的,所以我們瀏覽文章、查詢資料或者重構**,要麼是橫向讀,要麼是縱向讀,要麼使用搜尋功能,將文字作為乙個平面整體。而在編輯文字、編寫**的時候則不是橫向就是縱向。常規文字編輯器都是橫向編輯,而縱向編輯也常被作為特色功能。比如 vim、editplus、ultraedit 這些編輯器都有縱向編輯模式,或者稱為列模式。像日常文書處理工具 microsoft word、openoffice writer 也可以通過按下功能鍵 alt,實現縱向選中文字,然後對文字進行操作。縱向編輯不僅是編輯器的一種功能,更是人們思考問題的一種方式,專案符號、段落編號,都是縱向編輯的體現。

vim 的縱向編輯模式啟動方便,使用靈活,還可以配合上外掛程式實現很實用的高階功能。

回頁首在 vim 命令模式下,移動遊標定位於某乙個位置,鍵入ctrl-v後狀態列上出現 visual block 字樣,即進入縱向編輯模式。移動游標以按需選擇待編輯的區域。注意:在 windows 版本的 vim 中,鍵組合ctrl-v通常被對映為文字貼上,所以 window 版的 vim 的縱向編輯模式由ctrl-q啟動。當然靈活的 vim 也可以由使用者自行定義組合鍵。

回頁首將數列:

10.1.5.214 

10.1.5.212

10.1.5.210

ping -c 4 10.5.5.214 >> result0 

ping -c 4 10.5.5.212 >> result0

ping -c 4 10.5.5.210 >> result0

這是乙個將 ip 數列修改成可執行的 ping 命令序列的過程。

將 ip 數列中第二段所有數字「1」 修改為「5」:

將游標定位第乙個行 ip 位址第二段的「1」

ctrl-v進入縱向編輯模式

g移動游標到最後一行,可視塊覆蓋所要修改的列

r進入修改模式

5輸入數字「5」

esc退出縱向編輯模式,同時所有被選中的數字都被改成了「5」,並回到命令模式

結果如下:

10.5.5.214 

10.5.5.212

10.5.5.210

在所有行之前新增「ping – c 4 」:

將游標定位到第一行第一列

ctrl-v進入縱向編輯模式

g移動游標到最後一行第一列,可視塊覆蓋了第一列

i進入行首插入模式

ping -c 4輸入所要求字元「ping – c 4 」

esc退出縱向編輯模式的同時所有選中的字元前都新增了「ping – c 4 」,回到命令模式

結果如下:

ping -c 4 10.5.5.214 

ping -c 4 10.5.5.212

ping -c 4 10.5.5.210

在所有行之後新增「>> result0」:

將游標定位到第一行最後一列

ctrl-v進入縱向編輯模式

g移動游標到最後一行最後一列,visual   block  覆蓋了最後一列

a進入行尾插入模式

>> result輸入所要求字元「>> result0」

esc退出縱向編輯模式的同時所有選中的字元後都新增了「 >> result0」,回到命令模式

結果如下:

ping -c 4 10.5.5.214 >> result0 

ping -c 4 10.5.5.212 >> result0

ping -c 4 10.5.5.210 >> result0

回頁首以上例子中所演示的對**的縱向編輯,通過一般的**重構功能或者結合正規表示式的查詢替換也可以實現。然而 vim 的縱向編輯模式還可以通過外掛程式 visincr 的擴充套件,實現更豐富的功能,如縱向的生成數列。

vim visincr.vba.gz 

:so %

:q

操作方法以示例 1 的**為例:

使用ctrl-v和移動游標選擇最後都為數字「0」的一列

:鍵入冒號觸發 vim 進入命令列模式

:i以第乙個數字為出發點,縱向生成增量數列,幅度為 1

enter鍵入駕車鍵執行命令

結果如下:

ping -c 4 10.5.5.214 >> result0 

ping -c 4 10.5.5.212 >> result1

ping -c 4 10.5.5.210 >> result2

回頁首在應用程式開發過程中經常要生成乙個簡單有規律的測試資料。比如對一張表:

testtable (」ipaddr」 ,」filename」, 」owner」)

生成如下 sql 語句:

insert into test values("10.5.5.214」,」result0」,」testa」); 

insert into test values(」10.5.5.212」,」result1」,」testb」);

insert into test values(」10.5.5.210」,」result2」,」testc」);

這個縱向有規律的語句序列,可以借助 vinincr 應用縱向編輯功能來構造。

開啟乙個新的 vim 編輯頁面,在命令模式下先輸入乙個「3」,然後鍵入「i」進入編輯模式。數字「3」代表本次輸入的內容會重複輸 3 遍。

在 vim 中先輸入第一行:

insert into test values(」10.5.5.214」,」result0」,」testa」);

以回車結束行輸入並新開一行,按 esc 鍵退出編輯模式。

如果如下:

insert into test values(」10.5.5.214」,」result0」,」testa」); 

insert into test values(」10.5.5.214」,」result0」,」testa」);

insert into test values(」10.5.5.214」,」result0」,」testa」);

:鍵入冒號觸發 vim 進入命令列模式

:i -2以第乙個數字為出發點,縱向生成遞減數列,幅度為 2

enter鍵入駕車鍵執行命令

結果如下:

insert into test values(」10.5.5.214」,」result0」,」testa」); 

insert into test values(」10.5.5.212」,」result0」,」testa」);

insert into test values(」10.5.5.210」,」result0」,」testa」);

insert into test values(」10.5.5.214」,」result0」,」testa」); 

insert into test values(」10.5.5.212」,」result1」,」testa」);

insert into test values(」10.5.5.210」,」result2」,」testa」);

對於 owner 列,使用ctrl-v和移動游標選擇英文本母將要遞增的部分。

:鍵入冒號觸發 vim 進入命令列模式

:ia以第乙個字母為出發點,縱向生成按字母表排序的序列

enter鍵入回車鍵執行命令

結果如下:

insert into test values(」10.5.5.214」,」result0」,」testa」); 

insert into test values(」10.5.5.212」,」result1」,」testb」);

insert into test values(」10.5.5.210」,」result2」,」testc」);

以上步驟即演示了借助 vim 外掛程式 visincr 對**的縱向編輯,生成在縱向有邏輯規律的數列。

回頁首vim 不僅是乙個編輯工具還是一套思考方法,vim 有很多引導思維方向的技巧,讓 vim 在這個各種編輯器層出不窮的時候歷久彌新。本文從縱向編輯為切入點,結合 visincr 演示了開發、測試過程中可以使用的例項。

vi 縱向模式編輯

批量刪除 技巧 r 進入修改模式 i 進入行首插入模式 a 進入行尾插入模式 r替換 i前前新增 a後新增 1.多行注釋 a.按下ctrl v,進入列模式 b.在行首選擇需要注釋的行 c.按下 i 進入插入模式 d.然後輸入注釋符 等 e.按下 esc 鍵。2.刪除多行注釋 a.按下ctrl v,進...

VIM 編輯模式

vi有三種基本工作模式 命令模式 文字輸入模式 末行模式。任何時候,不管使用者處於何種模式,只要按一下esc鍵,即可使vi進入命令模式 我們在shell環境 提示符為 下輸入啟動vi命令,進入編輯器時,也是處於該模式下。在該模式下,使用者可以輸入各種合法的vi命令,用於管理自己的文件。此時從鍵盤上輸...

Vim 編輯器技巧

網上關於vim編輯器的使用教程多得不可勝數 這一篇估計也是其中之一,難逃厄運,但是爭取總結一些自己的知識點吧,對你有用,最好不過 個人認為,vim只是乙個工具,基本的使用掌握之後,了解熟悉一些快捷鍵,再加上一些奇技淫巧就可以,然後遇到不會不熟悉的東西,再google即可。複製一整行 yy 粘帖 p ...