Vim Ex 命令列模式篇
分類
說明
分享有關 Ex 命令列的使用方式。
命令列補全
幫助文件 :help cmdline-completion
在編輯命令列的時候,有一些指令可以用來補全遊標前面的單字。
以下是可以使用的指令:
CTRL-D
列出與遊標前面的模式所匹配的名字。
'wildchar'
選項
用遊標前的模式完成匹配。匹配的項目 (如果有多項匹配,則選第一項) 會插入並取代模式。大致上就是按 <Tab>
自動補全的功能。
Ex 命令列
幫助文件 :help _!
在 Ex 命令之後的 !
(驚嘆號) 使得命令以不同的方式執行。 !
應該緊跟在命令之後,中間沒有任何空白字元。如果插入了空白字元, !
則被視為該命令的參數,其含義是不同的。
範例
:w! name
將目前緩衝區內容寫入檔案 “name”。若該文件存在,則覆蓋之。
:w !name
將目前緩衝區內容作為標準輸入傳送給 “name” 命令。
Ex 命令列的範圍(基礎)
最簡單的範圍表達形式是 {number},{number}
。例如:
命令 | 說明 |
---|---|
:1,3 |
第1到3行。 |
:2,+3 |
第2行到當前行的後三行。 |
:2;+3 |
第2行到第2行的後三行。 |
Ex 命令列的範圍
幫助文件 :help cmdline-ranges
有些 Ex 指令前面可以接受一個範圍限定,這被稱作 [range]
(範圍)。 它由一個或多個被 ,
或 ;
分割的行限定字元組成。
幫助文件 :help :;
當範圍被 ;
分割時,在解釋下一個行限定符之前,遊標的位置會被設定為前一個行限定符確定的行值。也就是 :100;+3
一定會假設游標位置是100,即使目前游標位置不是100。
範例
4,/this line/
從第 4 行到符合目前遊標後的一個 “this line” 為止的範圍。
5;/that line/
從第 5 行到符合第 5 行之後的一個 “that line” 為止的範圍。
幫助文件 :help :range
指定行號也可以稱為 address。
行號可以用下列符號限定:
符號 | 說明 |
---|---|
number |
行號 1 , 100 |
. |
當前行 |
$ |
文件的最後一行 |
% |
相當於 1,$ (整個文件) |
't |
標記 t 的位置 (小寫) |
'T |
標記 T 的位置 (大寫);如果標記存在於另一個文件中,則不能在範圍裡套用。 |
/{pattern}[/] |
下一個匹配 {pattern} 的行 |
?{pattern}[?] |
前一個匹配 {pattern} 的行 |
幫助文件 :help :range-offset
這些符號後面可以跟著 (一個或多個) +
或 -
和一個可選的數字。該數字會與前面的行號相加或相減。若該數字省略,則認為是1,同 +1
。
如果 +
或 -
前為空,使用當前行,也就是 .+
。
++
或 --
就是 +2
和 -2
意思,跟符號數相同。
0
與 1-
相同,都是放在檔案開頭。
範例
:.,$
當前行到結尾
:1,.
1到當前行
:%
所有行
:.,.+10
當前行到當前行後10行
:.,+5
當前行到當前行後5行,.
省略
:1,$-2
1到最後一行-2行
:+,++
下一行到下下一行。
:2,3co0
將2到3行複製到檔案開頭
幫助文件 :help :range-pattern
在 {pattern}
之後需要由 /
或 ?
來分隔匹配模式與其之後的內容。
範例
:/pattern/d
刪除下一個包含 pattern 的行。
:/pattern/+d
刪除下一個包含 pattern 的下一行。
:/pattern1/,/pattern2/d
從第一個包含 pattern1 的行刪除到第一個包含 pattern2 的行。
:.,/pattern/d
從當前行刪除到第一個包含 pattern 的行。
反向搜尋,將 /
換成 ?
即可。
{number}
必須在 0 和檔案的總行數之間。當使用 0 (零) 的時候,大多數命令會把它解釋成 1 。
幫助文件 :help N:
計數和範圍
如果在進入 :
之前輸入了計數前綴,這種情況會被解釋成: :.,.+(count - 1)
簡單來說就是: 包含目前行,向後共計 “count” 行。
範例
3:d<CR>
刪除三行,被翻譯成: .,.+2d<CR>
。
Ex 裡的特殊字元
查看幫助: :help cmdline-special
在 Ex 命令中,下列字元在可以使用檔案名稱的地方有特殊的意義。
%
被目前檔名取代。
#
被替換檔案名稱取代,每個視窗都會分別記住,範例如下。
#n
(n 是數字) 被第 n 個緩衝區的檔名取代。
#0
與 #
相同。
##
被參數列表 (:args
) 裡的所有檔案名稱 (使用空格符號分隔) 取代。檔案名稱中的空格符號前面會加上一個反斜線。
#<n
(n 是一個正數) 被第 n 個舊檔名取代。要得到這個數值,請見 :oldfiles
或 v:oldfiles
。
相關文章:
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!