Vim Ex 命令列模式篇


建立時間: 2024年11月1日 08:30
更新時間: 2024年11月5日 08:46

說明

分享有關 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 意思,跟符號數相同。

01- 相同,都是放在檔案開頭。

範例

:.,$
當前行到結尾

: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 個舊檔名取代。要得到這個數值,請見 :oldfilesv:oldfiles


觀看次數: 47
cmdcmdlinecommandexlinevim
按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

一杯咖啡的力量,勝過千言萬語的感謝。

支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!