Linux 文本編輯器Vim(2)——詳細介紹普通模式(normal mode)

OS version: Ubuntu 18.04 LTS
Vim version: 8.0.1453

1、開篇

上一節我們瞭解了Vim的模式以及基本的操作,相信大家已經對Vim有了一些基本的瞭解。接下來我將繼續詳細的學習Vim模式中普通模式,以及具體的使用場景。

(最新版)Vim手冊中文版8.2可以通過下面的地址下載。
reference-2.3.0.pdf(https://sourceforge.net/projects/vimcdoc)

2、普通模式(normal mode)

普通模式的強大的功能體現在文本編輯上,在上一節我們簡單的介紹了操作符,動作命令,文本對象和重複。

除了上述功能以外呢,還有計數我們沒有講。接下來我們就從沒有講的計數開始講起。

2.1、批量操作(count)

在Vim中,在操作符前指定次數後,可以重複執行命令。

:h count
========================================================================
[count]         可選的數值,可用在命令前以重複該命令。在沒有特殊說明的情況下,
                如果省略該數值,會認爲該數值是 1。
========================================================================
  • 5p:就是將複製的內容進行粘貼5次。等同於ppppp
  • Y3p:複製當前行,然後粘貼3次。等同於yyppp

2.2、動作(motion)

分組 動作 說明 動作 說明
行移動 0 (零) 移動到行的第一個字符(包含空白字符) $ 移動到行尾(給出 [count],則爲[count-1] 行)
^ 移動到行的第一個非空白字符 g_ 移動到行尾的非空字符(給出 [count],則爲[count-1] 行)
字符移動 f{char} 向右搜索並把光標停在目標上 F{char} f{char}的逆向
t{char} 向右搜索並把光標停在目標前 T{char} t{char}的逆向
; 重複上次的 f、t、F 或者 T 命令 [count] 次 , 反方向重複上次的 f、t、F 或者 T 命令 [count] 次
文件移動 G 到第 [count] 行,缺省是文件的最後一行 gg 到第 [count] 行,缺省是文件的第一行
單詞移動 w 移動到下一個單詞的開頭 W 移動到下一個字串(忽略標點)的開頭
b 向前移動到單詞的開頭 B 向前移動到字串(忽略標點)的開頭
e 向後移動到單詞的末尾 E 向後移動到字串(忽略標點)的末尾
段落移動 } 移動到下一個段落 { 移動到前一個段落
記號移動 % 對應記號的移動(默認是([{}])) [count]go 移動到文件的第 [count] 個字節

除了上面介紹的以外,讀者朋友還可以通過下面的幫助文檔繼續學習相關內容。

幫助 說明
:h left-right-motions 左右移動
:h up-down-motions 上下移動
:h word-motions 單詞單位移動
:h object-motions 文本對象單位移動

2.3、操作符(operator)

分組 操作符 說明 使用例
編輯 y 複製 y4j(抽出5行)→P(粘貼)
d 刪除 d4j(刪除5行)
c 修改 c4j(刪除5行切換到插入模式)
大小寫轉換 gU 轉成大寫 gUw(把小寫的單詞轉成大寫的)
gu 轉成小寫 guW(把單詞轉成小寫的)
g~ 切換大小寫 g~W(小寫單詞轉換成大寫的)→g~W(大寫的單詞變成小寫的)
縮進 > 增加一個縮進 >4j(5行向右增加一個縮進)→>G(到文件結束部分增加一個縮進)
< 減少一個縮進 <4j(5行向左減少一個縮進)
摺疊 zf 創建摺疊 zf3j(摺疊4行)→zfG(摺疊到文件結束)
zd 刪除摺疊
za 打開摺疊
zn 所有的摺疊被打開

如果動作包括一個次數而操作符之前也有一個的話,兩者相乘。因此,“2d3w” 刪除六個單詞。

2.4、文本對象(objects)

按照以下規則去記憶,會幫助您快速記憶下面的命令。

  • i表示選擇不包括標籤、符號等內部內容。
  • a表示選擇包含標籤、符號等全部內容。

首先按下v進入視窗模式,然後輸入文本對象選擇命令,最後按下ESC回到初始的普通模式。

文本對象 說明
iw 選擇不包含空白字符的word
aw 選擇包含空白字符的word
ip 選擇段落的內部內容(不包括段落結束的換行符)
ap 選擇段落
i] 選擇[ ]區塊的內部
a] 選擇[ ]區塊的全體
i) 選擇() 區塊的內部
a) 選擇() 區塊的全體
i> 選擇<> 區塊的內部
a> 選擇<> 區塊的全體
i” 選擇"" 區塊的內部
a” 選擇"" 區塊的全體
i’ 選擇'' 區塊的內部
a’ 選擇'' 區塊的全體
it 選擇html、xml標籤的內部
at 選擇html、xml標籤的全體

2.5、 重複

.命令可以重複執行最後一次的修改。

2.6、 其他

操作 說明 操作 說明
u 撤銷 [count] 次更改(undo) Ctrl-r 重做 [count] 次被撤銷的更改(redo)
Ctrl-u 向上滾動半個屏幕 Ctrl-d 向下滾動半個屏幕
Ctrl-o 轉到跳轉表裏第 [count] 個較舊的光標位置 Ctrl-i 轉到跳轉表裏第 [count] 個較新的光標位置
~ 切換光標下字符的大小寫
* 光標下單詞的正向檢索。 # 光標下單詞的反向檢索。
n 將上次的 “/” 或 “?” 重複 [count] 次。 N 將上次的 “/” 或 “?” 在相反方向上重複 [count] 次
D 刪除從光標到 [count]-1 行的行尾。 C 刪除從光標到 [count]-1 行的行尾,並切換到插入模式
S 刪除 [count] 行,並切換到插入模式 s 刪除 [count] 個字符,並切換到插入模式
r{char} 把光標下的字符換成 {char}
Ctrl-a 把當前光標之上或之後的數值或者字母加上 [count] Ctrl-x 把當前光標之上或之後的數值或者字母減去 [count]
>> 當前行增加一個縮進 << 當前行減少一個縮進
J 連接 [count] 行,但至少包含兩行。刪除縮進,插入不多於兩個的空格 gJ 連接 [count] 行,但至少包含兩行。不插入或刪除任何空格。

2、結尾

普通模式還有很多的功能,本文介紹的部分只是其中的一小部分,但這就能顯著提高您的文本編輯效率。

當讀者朋友不滿足於本文中所介紹的功能的時候,讀者朋友可以通過查閱幫助文檔,得到想要的答案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章