溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

linux中如何使用屏幕文本編輯器Vi

發(fā)布時間:2021-10-21 14:48:20 來源:億速云 閱讀:164 作者:小新 欄目:系統(tǒng)運維

這篇文章主要介紹了linux中如何使用屏幕文本編輯器Vi,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Linux系統(tǒng)提供了一個完整的編輯器家族系列,如Ed、Ex、Vi和Emacs等,按功能它們可以分為兩大類:行編輯器(Ed、Ex)和全屏幕編輯器(Vi、Emacs)。行編輯器每次只能對一行進(jìn)行操作,使用起來很不方便。而全屏幕編輯器可以對整個屏幕進(jìn)行編輯,用戶編輯的文件直接顯示在屏幕上,修改的結(jié)果可以立即看出來,克服了行編輯的那種不直觀的操作方式,便于用戶學(xué)習(xí)和使用,具有強(qiáng)大的功能。

linux vi命令是Linux系統(tǒng)的***個全屏幕交互式編輯程序,它從誕生至今一直得到廣大用戶的青睞,歷經(jīng)數(shù)十年仍然是人們主要使用的文本編輯工具,足見其生命力之強(qiáng),而強(qiáng)大的生命力是其強(qiáng)大的功能帶來的。

本章中,我們將循序漸進(jìn)地介紹如何使用linux vi命令來建立、編輯、顯示以及處理文件。(注:文中的大寫字母為[shift]鍵+相應(yīng)的小寫字母的組合)

linux vi命令簡介

linux vi命令是“Visual interface”的簡稱,它在Linux上的地位就仿佛Edit程序在DOS上一樣。它可以執(zhí)行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據(jù)自己的需要對其進(jìn)行定制,這是其他編輯程序所沒有的。

linux vi命令不是一個排版程序,它不象Word或WPS那樣可以對字體、格式、段落等其他屬性進(jìn)行編排,它只是一個文本編輯程序。

linux vi命令沒有菜單,只有命令,且命令繁多。Vi有三種基本工作模式:命令行模式、文本輸入模式和末行模式。

命令行模式

任何時候,不管用戶處于何種模式,只要按一下鍵,即可使linux vi命令行模式;我們在shell環(huán)境(提示符為$)下輸入啟動linux vi命令,進(jìn)入編輯器時,也是處于該模式下。

在該模式下,用戶可以輸入各種合法的linux vi命令,用于管理自己的文檔。此時從鍵盤上輸入的任何字符都被當(dāng)做編輯命令來解釋,若輸入的字符是合法的linux vi命令,則linux vi命令在接受用戶命令之后完成相應(yīng)的動作。但需注意的是,所輸入的命令并不在屏幕上顯示出來。若輸入的字符不是Vi的合法命令,Vi會響鈴報警。

文本輸入模式

在命令模式下輸入插入命令i、附加命令a 、打開命令o、修改命令c、取代命令r或替換命令s都可以進(jìn)入文本輸入模式。在該模式下,用戶輸入的任何字符都被Vi當(dāng)做文件內(nèi)容保存起來,并將其顯示在屏幕上。在文本輸入過程中,若想回到命令模式下,按鍵即可。

末行模式

末行模式也稱ex轉(zhuǎn)義模式。

linux vi命令和Ex編輯器的功能是相同的,二者主要區(qū)別是用戶界面。在Vi中,命令通常是單個鍵,例如i、a、o等;而在Ex中,命令是以按回車鍵結(jié)束的正文行。linux vi命令有一個專門的“轉(zhuǎn)義”命令,可訪問很多面向行的Ex命令。在命令模式下,用戶按“:”鍵即可進(jìn)入末行模式下,此時linux vi命令會在顯示窗口的***一行(通常也是屏幕的***一行)顯示一個“:”作為末行模式的提示符,等待用戶輸入命令。多數(shù)文件管理命令都是在此模式下執(zhí)行的(如把編輯緩沖區(qū)的內(nèi)容寫到文件中等)。末行命令執(zhí)行完后,linux vi命令自動回到命令模式。例如:

:1,$s / A / a / g

則從文件***行至文件尾將大寫A全部替換成小寫a。

若在末行模式下輸入命令過程中改變了主意,可按鍵,或用退格鍵將輸入的命令全部刪除之后,再按一下退格鍵,即可使linux vi命令回到命令模式下。

如果要從命令模式轉(zhuǎn)換到編輯模式,可以鍵入命令a或者i;如果需要從文本模式返回,則按Esc鍵即可。在命令模式下輸入“:”即可切換到末行模式,然后輸入命令。

linux vi命令的進(jìn)入與退出

linux vi命令的進(jìn)入

用戶登錄到系統(tǒng)中之后,系統(tǒng)給出提示符“$”。在提示符后鍵入Vi和想要編輯(或建立)的文件名,便可進(jìn)入Vi。

[例1] 鍵入命令:

$ vi example.c

屏幕顯示如下:
~
~
~
~
~
~
~
~
~
~
~
~
~
“ example.c” [New File]

如果只鍵入Vi,而不帶文件名,也可以進(jìn)入Vi。之后在光標(biāo)處鍵入文件內(nèi)容,退出Vi時,只需在退出命令后輸入文件名即可。
進(jìn)入Vi之后,首先進(jìn)入的就是命令模式,也就是說等待命令輸入而不是文本輸入。這時輸入的字母都將作為命令來解釋。光標(biāo)停在屏幕***行首位上(用表示),其余各行行首均有一個“~”符號,表示該行為空行。***一行也稱狀態(tài)行,顯示出當(dāng)前正在編輯的文件名以及其狀態(tài)。如本例是[New File],表示example.c是一個新建的文件。如果example.c文件已在系統(tǒng)中存在,那么輸入上述命令后,則在屏幕上顯示出該文件的內(nèi)容,并且光標(biāo)停在***行的首位,在狀態(tài)行顯示出該文件的文件名、行數(shù)和字符數(shù)。

[例2] 鍵入命令:

$ vi example.c

然后鍵入:

#include
main ( )
{ int k ;
for ( k=0 ; k<3 ; k++) add( );
}
add( )
{ static int x=0;
x++ ;
printf(“x = %d\n”, x);
}
~
~
~
~
“ example.c” [ New File]

注意,在這里我們?yōu)榱斯?jié)省篇幅起見,屏幕只顯示15行。事實上,初始的顯示行數(shù)與用戶所用終端有關(guān),一般的CRT終端可顯示25行。在窗口系統(tǒng)中,顯示行數(shù)與運行l(wèi)inux vi命令的那個窗口有關(guān)。然而我們可以對顯示行數(shù)進(jìn)行設(shè)置。例如,在能顯示25行的CRT終端上,讓Vi只顯示15行。設(shè)置的方法將在本節(jié)后面介紹。

當(dāng)用linux vi命令建立一個新文件時,在進(jìn)入linux vi命令中也可以不給出文件名,當(dāng)編輯完文件需要保存數(shù)據(jù)時,再由用戶指定文件名。

進(jìn)入linux vi命令時,用戶不僅可以指定一個待編輯的文件名,而且還有許多附加操作。

如果希望在進(jìn)入linux vi命令之后,光標(biāo)處于文件中特定的某行上,可在linux vi命令后加上任選項+n,其中n為指定的行數(shù)。

[例3] 鍵入命令:

$ vi +5 example1.c

后,屏幕顯示如下:

#include
main ( )
{ int k ;
for ( k=0 ; k<3 ; k++) add( );
}
add( )
{ static int x=0;
x++ ;
printf(“x = %d\n”, x);
}
~
~
~
~
~
“ example.c” 12 lines, 125 characters

光標(biāo)將位于文件example1.c中的第5行上。

如果希望在進(jìn)入linux vi命令之后光標(biāo)處于文件最末行,則只需把命令中附加項“+”后面的數(shù)字n省略掉即可。

在進(jìn)入linux vi命令時,除了可以指定一個光標(biāo)起始行號之外,還可以在命令中指定一個模式串,此時在進(jìn)入linux vi命令后,光標(biāo)就處于文件中***個與指定模式串相匹配的那行上。

[例4] 鍵入命令:

$ vi +/int example1.c

屏幕顯示如下:

#include
main ( )
{ int k ;
for ( k=0 ; k<3 ; k++) add( );
}
add( )
{ static int x=0;
x++ ;
printf(“x = %d\n”, x);
}
~
~
~
~
~
“ example.c” 12 lines, 125 characters

光標(biāo)將位于文件example1.c中的第3行上。

使用linux vi命令可以同時編輯多個文件,只要在進(jìn)入linux vi命令的命令中寫入所要操作的文件即可,還可以使用通配符。

[例5] 鍵入命令:

$ vi *.cat

就可以編輯所有后綴為cat的文件了。當(dāng)然,您還可以使用shell中內(nèi)置的模式匹配來裝載文件,這樣會更富技巧性。一旦您在命令行中包含了所有的待編輯文件名,就可以在linux vi命令中方便地移來移去。

退出Vi

當(dāng)編輯完文件,準(zhǔn)備退出Vi返回到shell時,可以使用以下幾種方法之一。

在命令模式中,連按兩次大寫字母Z,若當(dāng)前編輯的文件曾被修改過,則Vi保存該文件后退出,返回到shell;若當(dāng)前編輯的文件沒被修改過,則Vi直接退出, 返回到shell。

在末行模式下,輸入命令:w

linux vi命令保存當(dāng)前編輯文件,但并不退出,而是繼續(xù)等待用戶輸入命令。在使用w命令時,可以再給編輯文件起一個新的文件名。

[例6]

:w newfile
此時Vi將把當(dāng)前文件的內(nèi)容保存到指定的newfile中,而原有文件保持不變。若newfile是一個已存在的文件,則Vi在顯示窗口的狀態(tài)行給出提示信息:

File exists (use ! to override)

此時,若用戶真的希望用文件的當(dāng)前內(nèi)容替換newfile中原有內(nèi)容,可使用命令

:w! newfile

否則可選擇另外的文件名來保存當(dāng)前文件。

在末行模式下,輸入命令:q

系統(tǒng)退出linux vi命令返回到shell。若在用此命令退出Vi時,編輯文件沒有被保存,則Vi在顯示窗口的最末行顯示如下信息:

No write since last change (use ! to overrides)

提示用戶該文件被修改后沒有保存,然后linux vi命令并不退出,繼續(xù)等待用戶命令。若用戶就是不想保存被修改后的文件而要強(qiáng)行退出linux vi命令時,可使用命令:q!

linux vi命令放棄所作修改而直接退到shell下。

在末行模式下,輸入命令:wq

linux vi命令將先保存文件,然后退出linux vi命令返回到shell。

在末行模式下,輸入命令:x

該命令的功能同命令模式下的ZZ命令功能相同。

linux vi命令中的行號

linux vi命令中的許多命令都要用到行號及行數(shù)等數(shù)值。若編輯的文件較大時,自己去數(shù)是非常不方便的。為此linux vi命令提供了給文本加行號的功能。這些行號顯示在屏幕的左邊,而相應(yīng)行的內(nèi)容則顯示在行號之后。

使用的命令為:在末行方式下輸入命令:

:set number

需要說明的是,這里加的行號只是顯示給用戶看的,它們并不是文件內(nèi)容的一部分。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“l(fā)inux中如何使用屏幕文本編輯器Vi”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI