學習vi和vim編輯器(6):ex編輯器概述(1)

vi編輯器使用的底層編輯器就是ex行編輯器,可以認爲vi編輯器是ex行編輯器的可視化模式。ex可以給你機動性更高,能力更強的編輯命令。ex以行爲導向,在對文件做大規模改變時就成了優點。

打開文件:

" ex filename "命令使用ex行編輯器打開文件,它列出來了文件的總行數及命令提示符(:),此時無法看到文件的任何一行,除非下達顯示一行或多行的ex命令,如下圖所示:

ex命令由行地址(可以只是一個行號)以及相應的命令構成。最基本的命令就是p,代表打印(到屏幕),所以在命令提示符中輸入" 1p "代表打印第一行。此時甚至可以省略p,單純的輸入行號等價於顯示該行。通過在兩個數值間用逗號分隔來指定一個範圍的行號,例如" 1,3 "代表第1至第3行。沒有行號的命令只會對當前行起作用。

輸入" :vi "命令可以從ex編輯器進入vi編輯器,也可以在vi編輯器中輸入" Q "進入ex編輯器。想在vi編輯器中使用ex編輯器命令,必須輸入特定字符 :(冒號)。在冒號後面輸入行號,就可以直接跳轉到該行,例如" :6 "等效於vi編輯器中的" 6G "命令,都是將光標移動到第6行。

用ex編輯:

許多負責常見編輯操作的ex命令在vi中都有相應的更簡單的命令。但是如果需要改變許多行時,ex命令可能更有用。常見的ex命令有:

全名    縮寫   功能

delete  d    刪除行

move   m   移動行

copy    co  複製行

             t    複製行

行地址:每一個ex編輯命令都需要知道要編輯的行號。指定行地址有如下幾種方法:

(1)明確的指定行號;

(2)用符號來指定相對於當前位置的行號;

(3)標識某些行的搜索模式作爲地址;

定義行範圍:通過行號來清楚地定義某一行或某段行的範圍。明確的指定行號也稱爲絕對行地址。例如

:3,18d 刪除3到18行;

:160,224m23 將第160行到第244行移動到第23行之後;

:23,29co100  將第23行到第29行復制到第100行之後;

通過:set nu 或:set number 來顯示行號,通過:set nonu或者 :set nonumber來關閉行號的顯示。 可以通過#來暫時顯示某些行的行號,例如" :1,10# "可以暫時顯示第1行到第10行的行號。另外通過如下命令也可以得到行號的信息:

:= 列出文件的總行數;

:.= 列出當前行的行號;

:/pattern/= 列出pattern第一次出現時的行號;

行尋址符號:可以使用符號表示行地址,這些行尋址符號可以和絕對行地址合併使用。

. 表示當前行;

$表示文件的最後一行;

%表示文件的每一行,等同於" 1,$ "的組合;

例如" : . ,$ d "刪除當前行到文件結尾間的文本。" :20 , . m $ "將第20行到當前行的文件內容移動到文件結尾。" :%d "刪除文件的所有行。" :%t$ "將所有行復制到文件的結尾(做連續的複製)。

除了指定絕對行地址之外,還可以指定相對於當前這一行的地址。+與-代表加上或減去後面的數值,例如" : . , +20d "刪除當前這一行到該行之後20行的文件內容。" :226 , $ m  -2 "將第226行到文件結尾的文件內容移動到當前行的兩行之前。數字0表示文件開頭,也就是第一行文本之前,所以0等效於1-。

搜索模式:使用搜索模式也可以指定行地址。例如

:/pattern/d 刪除下一個包含pattern的行;

:/pattern/+d刪除下一個包含pattern的行的下一行;

:/pattern1/,/pattern2/d 從第一個包含pattern1的行刪除到第一個包含pattern2的行;

這些模式的前後都要使用斜線作爲分界線。

重新定義當前這一行的位置:當用分號代替逗號時,第一個行地址將會作爲當前行地址,即使此時光標不在該行上。例如" :100;+5 p " 即可顯示第100行及其之後5行的內容。

全局搜索:

ex中有一個全局命令g,可以搜索模式並顯示所有包含這個模式的行。而" :g! "的功能則正好與" :g "相反,搜索所有不包含指定模式的行。

:g/pattern 尋找(移到)文件最後一次出現pattern的地方;

:g/pattern/p 尋找並顯示文件中所有包含pattern的行;

:g!/pattern/nu 尋找並顯示文件中所有不包含pattern的行,同時顯示所有找到行的行號;

:60,124g/pattern/p 尋找並顯示第60行與第124行之間包含pattern的行。

合併ex命令:

想輸入新的ex命令,並不是每次都需要輸入冒號,可以使用豎線(|)分隔命令,從而在同一個ex提示符下合併多個命令。

保存並離開文件:

:w  將緩衝區的內容寫入到文件中,但不離開。編輯文件時應該經常使用" :w ";

:q  離開編輯器;

:wq 寫入文件同時離開編輯器,這是無條件寫入,即使文件沒有被修改;

:x  寫入文件同時離開編輯器。只有文件被修改過時纔會寫入;


本章vi命令總結:

ex,1p,1,2p,d,m,co,t,:=,:.=,:/pattern/=,.,$,% ,+,-,:/pattern/d,:g,:g!,|,:w,:q,

:wq,:x


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