嵌入式Linux上的C語言編程實踐-第3章-Linux的文本編輯工具VI課件_第1頁
嵌入式Linux上的C語言編程實踐-第3章-Linux的文本編輯工具VI課件_第2頁
嵌入式Linux上的C語言編程實踐-第3章-Linux的文本編輯工具VI課件_第3頁
嵌入式Linux上的C語言編程實踐-第3章-Linux的文本編輯工具VI課件_第4頁
嵌入式Linux上的C語言編程實踐-第3章-Linux的文本編輯工具VI課件_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1

第3章Linux的文本編輯工具VI113.1vi文本編輯器概述與Unix相同,Linux本質(zhì)上是一個文本驅(qū)動(text-driven)的操作系統(tǒng)。文本文件就是全部由ASCII碼字符及某種語言的編碼字符構(gòu)成的文件,不含有任何樣式和格式信息。文本文件可以被任何文本編輯器解釋而不會出現(xiàn)亂碼,還可以被所有程序操作和使用。在Linux系統(tǒng)中,文本文件被廣泛地用作系統(tǒng)配置文件和系統(tǒng)工具軟件的操作對象。這使得用戶可以在文本方式下完成所有的工作,如編寫程序和命令腳本、讀/寫電子郵件、配置和管理系統(tǒng)等。而完成所有這些工作的基本工具就是文本編輯器。因此,Linux的用戶應(yīng)當(dāng)熟悉至少一種文本編輯器。3.1vi文本編輯器概述與Unix相同,Linux本質(zhì)上23.1.1vi文本編輯器介紹Linux下的文本編輯器有ex、sed、vi和emacs等很多種。其中,vi是最基本的文本編輯工具。vi(visual)誕生于1978年,由柏克萊大學(xué)的BillJoy編寫。從其誕生至今,vi始終是所有Unix/Linux系統(tǒng)上必配的編輯器,甚至在DOS、Windows、Macintosh、OS/2乃至IBM大型機(jī)S/390系統(tǒng)上都能見到vi的某個版本。目前Linux系統(tǒng)上流行的版本是vi增強(qiáng)版vim(viimproved)。vim是一個開放源代碼軟件,它在vi的基礎(chǔ)上增強(qiáng)了功能,也更容易使用?,F(xiàn)在許多Linux發(fā)行版中的vi就是vim。3.1.1vi文本編輯器介紹Linux下的文本編輯器有e33.1.1vi文本編輯器介紹vi是一個全屏幕文本編輯器,具有文本編輯所需的所有功能。vi以高效和快捷著稱,這是vi能夠在編輯器領(lǐng)域中保持幾十年領(lǐng)先地位的原因。以下介紹vi的幾個突出特點3.1.1vi文本編輯器介紹vi是一個全屏幕文本編輯器,43.1.1vi文本編輯器介紹1.編輯功能強(qiáng)大

vi的編輯功能十分強(qiáng)大,除通常的編輯功能外,vi還支持一些高級編輯特性,如正則表達(dá)式、宏和命令腳本。利用這些特性可以完成非常復(fù)雜的編輯任務(wù),實現(xiàn)編輯的智能化和自動化。另一方面,vi的功能又十分專注,它只是一個編輯器,沒有其他功能。Linux系統(tǒng)提供了許多專門用途的工具,如排版、排序、流過濾、E-mail、編譯等軟件。vi可以和這些工具軟件協(xié)同工作,從而實現(xiàn)幾乎所有的文件加工處理任務(wù)。用一些小而精悍、功能專一的工具結(jié)合起來完成復(fù)雜的處理功能,這正是Unix的設(shè)計哲學(xué)。3.1.1vi文本編輯器介紹1.編輯功能強(qiáng)大

vi53.1.1vi文本編輯器介紹2.適用于各種版本的Unix/Linux系統(tǒng)

vi是Unix/Linux系統(tǒng)的標(biāo)準(zhǔn)文本編輯器,幾乎每一臺Unix/Linux系統(tǒng)上都會有vi,這是其他編輯器無法相比的。3.適用于各種類型的終端

vi得以廣泛應(yīng)用的原因之一是它對終端設(shè)備的廣泛適應(yīng)性。不管是只有打字機(jī)鍵盤加Esc鍵的簡單終端,還是受通信限制的遠(yuǎn)程終端,或是配有完備的功能鍵和鼠標(biāo)的現(xiàn)代化終端,都可以很好地支持vi完成文本編輯工作。3.1.1vi文本編輯器介紹2.適用于各種版本的Uni63.1.1vi文本編輯器介紹4.使用靈活快捷

廣泛適應(yīng)性帶來的問題是繁多的命令。對于同一項編輯操作,vi提供了許多不同的命令。vi的命令都很簡練,往往是單個字符或少數(shù)幾個字符的組合。對初學(xué)者來說,使用這些命令并不方便,甚至過于復(fù)雜。但對于熟練的用戶來說,更多的選擇意味著更大的自由,簡單的命令意味著更少的擊鍵次數(shù)。正因為如此,vi被看做是Linux開發(fā)人員和系統(tǒng)管理員的編輯利器。初學(xué)者經(jīng)過一段時間的使用,也會逐漸習(xí)慣vi的操作方式,并形成自己特有的操作風(fēng)格。3.1.1vi文本編輯器介紹4.使用靈活快捷

廣泛73.1.2vi的工作模式vi是一個多模式的軟件,它有三種工作模式。在不同的工作模式下,它對輸入的內(nèi)容有不同的解釋。1.命令模式(Commandmode)

在命令模式下,輸入的任何字符都作為命令來解釋執(zhí)行,屏幕上不顯示輸入內(nèi)容。命令模式用于完成各種文本修改工作。2.輸入模式(Insertmode)

在輸入模式下,輸入的任何字符都將作為文件的內(nèi)容被保存,并顯示在屏幕上。輸入模式用于完成文本錄入工作。3.1.2vi的工作模式vi是一個多模式的軟件,它有三種83.1.2vi的工作模式3.末行模式(Lastlinemode)--底行模式

末行模式也稱為ex轉(zhuǎn)義模式。在末行模式下,光標(biāo)停留在屏幕的最末行,在此接收輸入的命令并執(zhí)行。末行模式用于執(zhí)行一些全局性操作,如文件操作、參數(shù)設(shè)置、查找與替換、拷貝與粘貼、執(zhí)行Shell命令等。

在文本編輯過程中,用戶可以控制vi在這三種工作模式之間進(jìn)行切換,完成各種編輯工作。三種模式之間的轉(zhuǎn)換關(guān)系如圖3-1所示。3.1.2vi的工作模式3.末行模式(Lastlin93.1.2vi的工作模式圖3-1vi工作模式的轉(zhuǎn)換AaIiOo:/?3.1.2vi的工作模式圖3-1vi工作模式的轉(zhuǎn)換103.1.3vi的啟動與退出在Shell下輸入vi命令后,便進(jìn)入全屏幕編輯環(huán)境命令格式是:vi[文件名][+n][+/str]保存與退出:w--保存但不退出:w<文件名>--另存為:wq--保存后退出;q!--不保存退出:q--未編輯,直接退出,編輯過則提示但不退出

3.1.3vi的啟動與退出在Shell下輸入vi命令后,11常用命令介紹文本插入命令a--在當(dāng)前光標(biāo)后插入字符A--在行尾插入i--在當(dāng)前光標(biāo)前插入字符I--在行首插入o--在當(dāng)前行的下一行插入新行O--在當(dāng)前行的上一行插入新行常用命令介紹文本插入命令12常用命令介紹移動光標(biāo)命令hjkl--左、下、上、右移動光標(biāo),相當(dāng)于光標(biāo)鍵的作用。bBwWeE--以單詞為單位移動光標(biāo)()--以句為單位移動光標(biāo){}--以段為單位移動光標(biāo)^f^b--前后翻頁(^fdown^bup)0$--移動光標(biāo)到行首(0)或行尾($)nG--移動光標(biāo)到第n行(1G--到文本首行,1G==gg)G--光標(biāo)移到文本末行常用命令介紹移動光標(biāo)命令13常用命令介紹刪除文本命令x--刪除當(dāng)前光標(biāo)位置的字符(del)nx--刪除n個字符X--刪除當(dāng)前光標(biāo)前的字符(backspace)nXdd--刪除當(dāng)前行(ndd--刪除當(dāng)前行開始的n行)D--刪除光標(biāo)位置到行尾之間的字符(刪后半行)d0--刪除光標(biāo)位置到行首之間的字符(刪前半行)注:刪除的內(nèi)容均進(jìn)入剪貼板

合并行命令J--將光標(biāo)所在行的下一行合并到當(dāng)前行常用命令介紹刪除文本命令14常用命令介紹替換(改寫)文本命令r--用隨后輸入的一個字符替換當(dāng)前字符R--用隨后輸入的字符替換光標(biāo)位置開始的若干字符,每輸入一個字符就替換一個原有字符,直到按Esc鍵。(相當(dāng)于進(jìn)入改寫狀態(tài))s--用隨后輸入的一個或多字符替換當(dāng)前光標(biāo)位置的一個字符,若只輸入一個則與r命令相同。S--用新輸入的內(nèi)容替換當(dāng)前行(不管光標(biāo)在行中何處)常用命令介紹替換(改寫)文本命令15常用命令介紹查找字符串命令/str--從光標(biāo)處往后搜索字符串str?str--從光標(biāo)處往前搜索字符串strn--在執(zhí)行以上查找命令的基礎(chǔ)上繼續(xù)搜索下一個strN--在執(zhí)行以上查找命令的基礎(chǔ)上反向搜索下一個str常用命令介紹查找字符串命令16常用命令介紹查找替換命令:m,ns/str1/str2/g[c]--將第m行與第n行之間的所有str1替換成str2,如果后面是g,則自動替換(替換前不提示),如果后面為c,則每次替換前均要提示是否替換。例如::4,15s/str1/str2/g--自動替換第4行到第15行中的str1:s/str1/str2/g--只替換當(dāng)前行中的str1:%s/str1/str2/g--替換所有行中的str1,等價于:1,$s/str1/str2/g常用命令介紹查找替換命令17常用命令介紹文本選擇v--進(jìn)入按字選擇模式:上下左右移動光標(biāo)進(jìn)行文本選擇(可任意選擇)V--進(jìn)入按行選擇模式:上下移動光標(biāo)進(jìn)行文本行的選擇(只能選擇若干行)常用命令介紹文本選擇18常用命令介紹剪切命令d--剪切選定的內(nèi)容至剪貼板dd--剪切當(dāng)前行至剪貼板復(fù)制命令y--復(fù)制選定的內(nèi)容至剪貼板yy--復(fù)制當(dāng)前行至剪貼板粘貼命令p--將剪切板中的內(nèi)容粘貼到下一行(或當(dāng)前光標(biāo)之前)P--將剪切板中的內(nèi)容粘貼到上一行(或當(dāng)前光標(biāo)之后)高級用法提示-使用多個剪切板的方法:在使用剪切或復(fù)制命令前先按"<小寫字母>,便可將相應(yīng)的內(nèi)容剪切或復(fù)制到小寫字母對應(yīng)的剪貼板中,在粘貼命令前用"<小寫字母>便可將指定的剪貼板中的內(nèi)容粘帖到相應(yīng)的位置。如

"ad"bdd"cy"dyy"cp"bP常用命令介紹剪切命令19常用命令介紹部分底行命令:setai/noai--設(shè)置/取消自動縮進(jìn):setnu/nonu--設(shè)置/取消行號顯示:sethlsearch/nohlsearch--設(shè)置/取消高亮顯示搜索到的字符串:n--跳轉(zhuǎn)到第n行:n1,n2con3--將第n1至n2之間的行復(fù)制到第n3行下面。:n1,n2mn3--將第n1至n2之間的行移動到第n3行下面。:n1,n2d--刪除第n1至n2之間的行常用命令介紹部分底行命令203.1.3vi的啟動與退出vi<文件名>[+n][+/str]vi啟動后首先進(jìn)入命令模式。此時,用戶可以使用vi的編輯命令進(jìn)行文本的輸入和修改。注意:編輯命令只是修改調(diào)入編輯緩沖區(qū)中的文件的副本,文件本身不會被修改。所以,編輯完成后,要用:wq命令將修改后的內(nèi)容保存到文件中并退出vi。若此次運(yùn)行未對原文件作任何修改,則可用:q命令退出。圖3-3示意了退出命令的用法。3.1.3vi的啟動與退出vi<文件名>[+n][+213.2vi基?本?命?令vi的命令繁多,但通常的編輯工作只需要掌握其中一小部分命令。而對于一些特殊的操作或編輯任務(wù),總能夠在vi手冊中找到適當(dāng)?shù)拿睢?/p>

vi的常用編輯命令分為以下幾類:

●屏幕翻滾命令;

●移動光標(biāo)命令;

●插入與刪除命令;

●修改與替換命令;

●拷貝與粘貼命令;

●復(fù)原與重復(fù)命令。3.2vi基?本?命?令vi的命令繁多,但通常的編輯工作223.2vi基?本?命?令vi的命令通常是簡單的字符(如a、s、c)或是字符組合(如dw、cc),還有少數(shù)幾個控制鍵組合字符(如Ctrl+u)。這就是說,僅僅通過普通鍵盤就可以實現(xiàn)所有編輯工作,完全不需要用鼠標(biāo),也不倚賴于某些控制鍵。比起使用鼠標(biāo)和復(fù)雜控制組合鍵來說,鍵入字符命令的速度要快得多。因此,熟練使用這些字符命令能夠提高編輯的效率。

盡管只用字符命令就可以完成所有編輯工作,vi還是提供了對現(xiàn)代鍵盤上的編輯鍵的支持。適當(dāng)?shù)厥褂眠@些熟悉的按鍵將使編輯操作更加輕松。表3-1列出了這些鍵在不同模式下的作用。3.2vi基?本?命?令vi的命令通常是簡單的字符(如a233.2vi基?本?命?令←↑↓→←→↑↓3.2vi基?本?命?令←↑↓→←→↑↓243.2vi基?本?命?令以下分類介紹常用的vi命令。注意:在命令模式下輸入的字符都被vi解釋為命令,不在屏幕上顯示。若輸入的是非法命令則響鈴報警。此外,vi的命令是區(qū)別大小寫的,即大寫字母和小寫字母代表的是不同的命令。3.2vi基?本?命?令以下分類介紹常用的vi命令。注意253.2.1屏幕翻滾當(dāng)編輯的文件比較大時,使用翻屏命令可以快速地將要編輯的區(qū)域調(diào)入屏幕顯示區(qū)。用PageDown和PageUp鍵可以方便地實現(xiàn)上下翻屏,但在有些場合下需要用命令來實現(xiàn)更靈活的翻屏操作。常用的幾個翻屏命令介紹如下。

翻屏命令:

Ctrl+u: 向上翻半屏。

Ctrl+d: 向下翻半屏。

Ctrl+f: 向下翻一屏。同PageDown鍵。

Ctrl+b: 向上翻一屏。同PageUp鍵。

[n]z+Enter:將第n行滾至屏幕頂部,不指定n時將當(dāng)前行滾至屏幕頂部3.2.1屏幕翻滾當(dāng)編輯的文件比較大時,使用翻屏命令可以263.2.2光標(biāo)定位與移動在輸入或修改文本前,應(yīng)先將光標(biāo)移到適當(dāng)?shù)奈恢?。vi不支持用鼠標(biāo)移動光標(biāo)的方式,但以下命令可以更加高效地定位和移動光標(biāo)。

光標(biāo)定位命令:

0

光標(biāo)移至行首。同Home鍵。

^ 光標(biāo)移至行首第1個非空格字符。

$

光標(biāo)移至行尾。同End鍵。

[n]G

光標(biāo)移到第n行,未指定n時移到末行。

[n]|

光標(biāo)移到第n列,未指定n時移到首列。

H、M、L

光標(biāo)移到屏幕首、中、尾行行首。3.2.2光標(biāo)定位與移動在輸入或修改文本前,應(yīng)先將光標(biāo)移273.2.2光標(biāo)定位與移動光標(biāo)移動命令:

h、j、k、l 光標(biāo)向左、下、上、右移一個字符。同箭頭鍵。

b、w

光標(biāo)移到上一個詞、下一個詞首。

e 光標(biāo)移到詞尾。

(、)

光標(biāo)移到句首、句尾。

{、}

光標(biāo)移到段首、段尾。

注:以上光標(biāo)移動命令前帶數(shù)字n時,表示重復(fù)移動n次。如:2h為左移2格,3e為移到后面第3個詞的詞尾。3.2.2光標(biāo)定位與移動光標(biāo)移動命令:

h、j、k、283.2.3文本輸入與刪除1.文本的輸入先將光標(biāo)定位在要輸入的位置上然后執(zhí)行插入命令,進(jìn)入輸入模式。處于輸入模式時,屏幕底部會顯示“—插入—”提示,表示后續(xù)的輸入都作為文件的輸入內(nèi)容。輸入文本,完成后按Esc鍵就可返回命令模式。

插入(insert)命令都是單字符命令,可以靈活地實現(xiàn)在當(dāng)前光標(biāo)位置的前、后、行首、行尾、上一行、下一行開始輸入。3.2.3文本輸入與刪除1.文本的輸入293.2.3文本輸入與刪除插入命令:

a、A

在光標(biāo)位置后(a)、行尾后開始插入(A)。

i、I

在光標(biāo)位置前(i)、行首前開始插入(I)。i的作用與Insert鍵相同。

o、O 在光標(biāo)所在行之后(o)、光標(biāo)所在行之前的新行開始插入(O)。

3.2.3文本輸入與刪除插入命令:

a、A 在光標(biāo)303.2.3文本輸入與刪除2.文本的刪除

刪除(delete)文本的最簡單方法是將光標(biāo)移到要刪除的字符上,然后,每按一下x鍵或Delete鍵就會刪掉一個字符。若要刪除的文本較多時,可以使用下面更加靈活的刪除命令。刪除命令:

x、X 刪除光標(biāo)處(x)、光標(biāo)前的字符(X)。x的作用與Delete鍵相同。

dd

刪除光標(biāo)所在的行。

D 刪除光標(biāo)右面的文本。

J 刪除當(dāng)前行尾的換行符,使當(dāng)前行與下一行合并為一行。3.2.3文本輸入與刪除2.文本的刪除

刪除(de313.2.3文本輸入與刪除

d+定位符

刪除從光標(biāo)位置到指定位置范圍內(nèi)的字符。常用的有:

d0、d^

刪除光標(biāo)左面的文本。0或^代表行首。

d$ 刪除光標(biāo)右面的文本。$代表行尾。

dG 刪除光標(biāo)所在行之后的所有行。G代表最后一行。

Db 刪除光標(biāo)處前的字符直到詞首。b代表詞首。

De 刪除光標(biāo)處的字符直到詞尾。e代表詞尾。

Dw 刪除光標(biāo)處的字符直到下一個詞的詞首。w代表下一詞詞首。

注:以上命令前帶數(shù)字n時,表示刪除的范圍擴(kuò)大n倍。如:3dd為刪除3行,2de為刪除從光標(biāo)開始的2個詞。3.2.3文本輸入與刪除d+定位符 刪除從光323.2.4文本修改與替換1.文本的修改

文本修改(correct)是指改寫一部分文本的內(nèi)容,修改的過程是:先刪除指定范圍內(nèi)的文本,然后插入新文本,最后用Esc鍵結(jié)束插入。以下介紹幾個常用的修改命令。

修改命令:

cc 修改光標(biāo)所在的行。

C 修改光標(biāo)處到行尾的文本。

c+定位符 修改光標(biāo)到指定范圍內(nèi)的文本。常用的有:

c0、c^

修改光標(biāo)左面的文本。

c$

修改光標(biāo)右面的文本。

cG

修改光標(biāo)所在行之后的所有行。3.2.4文本修改與替換1.文本的修改

文本修改(333.2.4文本修改與替換

cb 修改光標(biāo)處前的字符直到詞首。

cw 修改光標(biāo)處的字符直到詞尾。

cl 修改光標(biāo)處的字符。(l是L的小寫)

注:以上命令前帶數(shù)字n時,表示修改的范圍擴(kuò)大n倍。如:5cc為修改從光標(biāo)所在行開始的5行,3cw為修改從光標(biāo)開始的3個詞。

例3.1修改命令的用法:

原文本行: Who’safraidofthebigwolf?

執(zhí)行命令cwbear<Esc>: Who’safraidofthebigbear?(修改至字尾)3.2.4文本修改與替換cb 修改光標(biāo)處前的字343.2.4文本修改與替換移動光標(biāo):Who’safraidofthebigbear?

執(zhí)行命令C$litterlamb?<Esc>:Who’safraidofthelitterlamb?(修改到行尾)

移動光標(biāo):Who’s

afraidofthelitterlamb?

執(zhí)行命令c^Idon’t<Esc>:Idon’tafraidofthelitterlamb?(修改至行首)執(zhí)行命令$:Idon’tafraidofthelitterlamb?

執(zhí)行命令cl.<Esc>:Idon’tafraidofthelitterlamb.(修改當(dāng)前字符)

執(zhí)行命令ccIlikethelamb.<Esc>:Ilikethelamb.(修改整行)3.2.4文本修改與替換移動光標(biāo):Who’sa353.2.4文本修改與替換2.文本的替換與替代

替換(replace)是指用一個字符替換另一個字符,這是一種覆蓋操作,替換后文本的長度保持不變。替代(substitute)則是指用多個字符取代一個字符或一行,是一個先刪除后插入的操作。通常情況下,替代后的文本長度會發(fā)生變化。以下介紹常用的替換與替代命令。

替換與替代命令;

r 用輸入的一個字符替換光標(biāo)處的字符。

R 用輸入的文本逐個替換從光標(biāo)處開始的各個字符,直到按下Esc鍵。

s 用輸入的文本替代光標(biāo)處的字符,用Esc鍵結(jié)束輸入,等同于cl。

S 用輸入的文本替代光標(biāo)所在的行,用Esc鍵結(jié)束輸入,等同于cc。3.2.4文本修改與替換2.文本的替換與替代

替換363.2.4文本修改與替換注:以上命令前帶數(shù)字n時,表示替換或替代的范圍擴(kuò)大n倍。如:4r為用輸入的字符替換從光標(biāo)處開始的4個字符,2s為用輸入的文本替代從光標(biāo)處的開始的2個字符。3S為用輸入的文本替代從光標(biāo)所在的行開始的3行。

例3.2替換與替代命令的用法:

設(shè)原文本行的內(nèi)容是: Thosisatest.

執(zhí)行命令ri: Thisisatest.

執(zhí)行命令Rat<Esc>: Thatisatest.

執(zhí)行命令2w: Thatisatest.

執(zhí)行命令snota<Esc>: Thatisnotatest.

執(zhí)行命令2l: Thatisnotatest.

執(zhí)行命令4sexample<Esc>: Thatisnotanexample.

執(zhí)行命令SThosearetests.<Esc>:Thosearetests.3.2.4文本修改與替換注:以上命令前帶數(shù)字n時,表示替373.2.5文本拷貝與粘貼拷貝(copy)操作是將光標(biāo)處的文本復(fù)制到一個緩沖區(qū)中(類似于Windows中的剪貼板);粘貼(paste)操作是將緩沖區(qū)中的內(nèi)容插入到光標(biāo)處。以下介紹常用的拷貝粘貼命令。

拷貝與粘貼命令:

yy 拷貝光標(biāo)所在行至緩沖區(qū)。

y+定位符 拷貝光標(biāo)到指定范圍內(nèi)的文本。常用的有:

y0、c^

拷貝光標(biāo)左面的文本。

y$ 拷貝光標(biāo)右面的文本。

yG

拷貝光標(biāo)所在行之后的所有行。

yb 拷貝光標(biāo)處的字符直到詞首。

yw 拷貝光標(biāo)處的字符直到詞尾。3.2.5文本拷貝與粘貼拷貝(copy)操作是將光標(biāo)處的383.2.5文本拷貝與粘貼p/P

若緩沖區(qū)中的內(nèi)容是完整的行,則將這些行插入到光標(biāo)所在行之后/之前;若不是完整的行,則將這些文本插入到光標(biāo)處之后/之前。

注:以上命令前帶數(shù)字n時,表示拷貝和粘貼的范圍擴(kuò)大n倍。如:2yy為拷貝從光標(biāo)所在行開始的2行,3yw為拷貝從光標(biāo)開始的3個詞。

3.2.5文本拷貝與粘貼p/P 若緩沖區(qū)中393.2.6撤銷與重做撤銷(undo)即消除上一個命令所做的修改,恢復(fù)到命令執(zhí)行前的樣子。重做(redo)就是重復(fù)執(zhí)行上一個命令。

撤銷與重做命令:

u 撤銷上一個命令所做的修改。

U 撤銷最近針對一行所做的全部修改。在對一行連續(xù)做了多處修改后,用此命令可以一次恢復(fù)全行。

.(點)

重復(fù)前一個命令。3.2.6撤銷與重做撤銷(undo)即消除上一個命令所做403.3vi常用末行命令在命令模式下,輸入“:”、“/”或“?”字符(稱為ex轉(zhuǎn)義字符)都將進(jìn)入末行模式,隨后的輸入被解釋為末行命令,在屏幕末行顯示。輸入完成后按Enter鍵執(zhí)行。末行命令執(zhí)行結(jié)束后返回命令模式,或退出vi。

末行命令主要有以下幾類:

●字符串搜索與替換命令;

●文件操作與退出命令;

●其他命令。3.3vi常用末行命令在命令模式下,輸入“:”、“/”或413.3.1搜索與替換命令1.字符串搜索

要在一個大文件中查找某個字符串,可以用字符串搜索命令。執(zhí)行搜索命令后,光標(biāo)將停留在第一個匹配字符串的首字符處。按“n”或“N”則移到下一個匹配字符串之首。如果不存在匹配的字符串,則會在末行上顯示“找不到模式”。搜索命令有以下兩種:

/模式 從光標(biāo)處向后搜索與指定模式匹配的字符串。按n向后繼續(xù)找。

?模式

從光標(biāo)處向前搜索與指定模式匹配的字符串。按N向前繼續(xù)找。

例如:執(zhí)行/and命令,光標(biāo)將從當(dāng)前位置移到后面第一個“and”的字符“a”上。按n移到下一個“and”上。當(dāng)搜索到文件尾時,再按n則返回到文件頭繼續(xù)搜索。3.3.1搜索與替換命令1.字符串搜索

要在一個大423.3.1搜索與替換命令2.字符串替換

字符串替換使用s命令,它的功能是在指定的行中搜索與指定模式相匹配的字符串,并用另一個字符串替換它。

s命令的一般格式是::[n1,n2]s/p1/p2/[g][c]

其中n1,n2表示目標(biāo)行的行號范圍,可以用“%”代表所有行;未指定范圍時,目標(biāo)行就是光標(biāo)所在的當(dāng)前行。p1是用做搜索的字符串模式,p2是用做替換的字符串模式。模式中可以用“^”代表行首,“$”代表行尾。s命令可以帶g和c選項。g表示替換目標(biāo)行中所有匹配的字符串,沒有g(shù)的話則只替換目標(biāo)行中第一個匹配的字符串。選項c表示替換前要求用戶確認(rèn)3.3.1搜索與替換命令2.字符串替換

字符串替換433.3.1搜索與替換命令例3.3s命令的用法:

:s/the/The/ 將當(dāng)前行中第1個the改為The。

:s/is/are/g 將當(dāng)前行中所有is改為are。

:s/isa/hasa/gc將當(dāng)前行中所有isa改為hasa。替換前提示用戶確認(rèn)。

:1,6s/IF/if/g 將第1至6行中的所有IF用if替代。

:%s/^//g 在所有行的行首處加4個空格。3.3.1搜索與替換命令例3.3s命令的用法:

:443.3.1搜索與替換命令3.全局命令

全局命令g(global)的功能是在全文中搜索含有與指定模式相匹配的字符串的行,對匹配的行做標(biāo)記。g命令的格式是:

:g/p1

搜索所有包含p1字符串模式的行。

:g!/p1搜索所有不包含p1字符串模式的行。

例如::g/and命令將找出所有含有“and”的行;:g!/and/命令找出所有不含“and”的行。

vi的許多末行命令都是針對行的編輯命令。g命令可以與這些面向行的命令聯(lián)合使用,它的作用是修飾這些命令,為其確定滿足某個條件的目標(biāo)行。在g命令的修飾下,這些行編輯命令就可用來完成面向全文的、按模式篩選的編輯操作。3.3.1搜索與替換命令3.全局命令

全局命令g(453.3.1搜索與替換命令g命令與其他命令聯(lián)合使用的格式是:

:g/p1/命令 對所有包含p1的行執(zhí)行指定的命令。

:g!/p1/命令 對所有不包含p1的行執(zhí)行指定的命令。

例如:p命令的功能是顯示行,:g/and/p命令將顯示所有含有“and”的行;d命令的功能是刪除行,:g!/Note/d命令將刪除所有不含“Note”的行。3.3.1搜索與替換命令g命令與其他命令聯(lián)合使用的格式是463.3.1搜索與替換命令4.全局替換

s命令是面向行的字符串替換命令。s命令經(jīng)常與g命令聯(lián)合使用,實現(xiàn)更靈活更細(xì)致的全局替換功能。

全局替換命令的一般格式是:g命令/s命令。其含義是:先用g命令在文件中搜索含有某個模式的行,并做標(biāo)記,然后用s命令對所有有標(biāo)記的行執(zhí)行搜索和替換。常用的全局替換命令的格式有:

:g/p1/s/p2/p3/g

將文件中所有含有p1的行中的p2用p3替換。

:g!/p1/s/p2/p3/g

將文件中所有不含有p1的行中的p2用p3替換。3.3.1搜索與替換命令4.全局替換

s命令是面向473.3.1搜索與替換命令

:g/p1/s//p2/g

將文件中所有的p1用p2替換。這里:g/p1/s//p2/g是:g/p1/s/p1/p2/g的簡寫,即當(dāng)s命令的搜索模式與g命令的搜索模式相同時,可以省略s中的搜索模式。

注意:此處//之間沒有空格3.3.1搜索與替換命令:g/p1/s//p2/g 483.3.1搜索與替換命令例3.4全局替換命令的用法:

:g/the/s//The/

將文中所有行的第1個the改為The。

:g/is/s//are/g

將文中所有is改為are。

:g/Mary/s/1988//g 將所有含有Mary的行中的所有1988去掉。

:g/printf/s/val/sum/gc 將所有含有printf的行中的所有val改為sum。替換前先確認(rèn)。

:g!/*/s/IF/if/g

將所有不包含‘*’的行中的所有IF用if替代。3.3.1搜索與替換命令例3.4全局替換命令的用法:493.3.2文件操作與退出命令

文件操作命令包括讀文件和寫文件操作。讀文件就是將文件的內(nèi)容讀入編輯緩沖區(qū)中,寫文件就是將編輯緩沖區(qū)的內(nèi)容保存到文件中。在退出vi時,可以選擇是否保存文件。以下是常用的退出和文件操作命令:

3.3.2文件操作與退出命令文件操作命令包括讀文件和寫503.3.2文件操作與退出命令

:w[文件名]

寫入指定文件。若未指定文件則寫入當(dāng)前文件,即vi啟動時打開的文件。

:q

未修改原文件,不保存直接退出。

:wq、:x 保存文件并退出。

:q! 放棄修改,不保存文件,退出。

:e!

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論