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時(shí),,只需在退出命令后輸入文件名即可。 進(jìn)入Vi之后,,首先進(jìn)入的就是命令模式,,也就是說(shuō)等待命令輸入而不是文本輸入。這時(shí)輸入的字母都將作為命令來(lái)解釋,。光標(biāo)停在屏幕第一行首位上(用 表示),其余各行行首均有一個(gè)“~”符號(hào),,表示該行為空行,。最后一行也稱狀態(tài)行,顯示出當(dāng)前正在編輯的文件名以及其狀態(tài)。如本例是[New File],,表示example.c是一個(gè)新建的文件,。如果example.c文件已在系統(tǒng)中存在,那么輸入上述命令后,,則在屏幕上顯示出該文件的內(nèi)容,,并且光標(biāo)停在第一行的首位,在狀態(tài)行顯示出該文件的文件名,、行數(shù)和字符數(shù),。 [例2] 鍵入命令: $ vi example.c 然后鍵入: #include <stdio.h> 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é)省篇幅起見(jiàn),,屏幕只顯示15行,。事實(shí)上,初始的顯示行數(shù)與用戶所用終端有關(guān),,一般的CRT終端可顯示25行,。在窗口系統(tǒng)中,顯示行數(shù)與運(yùn)行Vi的那個(gè)窗口有關(guān),。然而我們可以對(duì)顯示行數(shù)進(jìn)行設(shè)置,。例如,在能顯示25行的CRT終端上,,讓Vi只顯示15行,。設(shè)置的方法將在本節(jié)后面介紹。 當(dāng)用Vi建立一個(gè)新文件時(shí),,在進(jìn)入Vi的命令中也可以不給出文件名,,當(dāng)編輯完文件需要保存數(shù)據(jù)時(shí),再由用戶指定文件名,。 進(jìn)入Vi時(shí),,用戶不僅可以指定一個(gè)待編輯的文件名,而且還有許多附加操作,。 如果希望在進(jìn)入Vi之后,,光標(biāo)處于文件中特定的某行上,可在Vi后加上任選項(xiàng)+n,,其中n為指定的行數(shù),。 [例3] 鍵入命令: $ vi +5 example1.c 后,屏幕顯示如下: #include <stdio.h> 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)入Vi之后光標(biāo)處于文件最末行,,則只需把命令中附加項(xiàng)“+”后面的數(shù)字n省略掉即可。 在進(jìn)入Vi時(shí),,除了可以指定一個(gè)光標(biāo)起始行號(hào)之外,,還可以在命令中指定一個(gè)模式串,,此時(shí)在進(jìn)入Vi后,光標(biāo)就處于文件中第一個(gè)與指定模式串相匹配的那行上,。 [例4] 鍵入命令: $ vi +/int example1.c 屏幕顯示如下: #include <stdio.h> 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行上,。 使用Vi可以同時(shí)編輯多個(gè)文件,只要在進(jìn)入Vi的命令中寫(xiě)入所要操作的文件即可,,還可以使用通配符,。 [例5] 鍵入命令: $ vi *.cat 就可以編輯所有后綴為cat的文件了。當(dāng)然,,您還可以使用shell中內(nèi)置的模式匹配來(lái)裝載文件,,這樣會(huì)更富技巧性。一旦您在命令行中包含了所有的待編輯文件名,,就可以在Vi中方便地移來(lái)移去,。 退出Vi 當(dāng)編輯完文件,準(zhǔn)備退出Vi返回到shell時(shí),,可以使用以下幾種方法之一,。 在命令模式中,連按兩次大寫(xiě)字母Z,,若當(dāng)前編輯的文件曾被修改過(guò),,則Vi保存該文件后退出,返回到shell,;若當(dāng)前編輯的文件沒(méi)被修改過(guò),,則Vi直接退出, 返回到shell。 在末行模式下,,輸入命令 :w Vi保存當(dāng)前編輯文件,,但并不退出,而是繼續(xù)等待用戶輸入命令,。在使用w命令時(shí),,可以再給編輯文件起一個(gè)新的文件名。 [例6] :w newfile 此時(shí)Vi將把當(dāng)前文件的內(nèi)容保存到指定的newfile中,,而原有文件保持不變,。若newfile是一個(gè)已存在的文件,則Vi在顯示窗口的狀態(tài)行給出提示信息: File exists (use ! to override) 此時(shí),,若用戶真的希望用文件的當(dāng)前內(nèi)容替換newfile中原有內(nèi)容,,可使用命令 :w! newfile 否則可選擇另外的文件名來(lái)保存當(dāng)前文件。 在末行模式下,,輸入命令 :q 系統(tǒng)退出Vi返回到shell,。若在用此命令退出Vi時(shí),編輯文件沒(méi)有被保存,,則Vi在顯示窗口的最末行顯示如下信息: No write since last change (use ! to overrides) 提示用戶該文件被修改后沒(méi)有保存,,然后Vi并不退出,,繼續(xù)等待用戶命令。若用戶就是不想保存被修改后的文件而要強(qiáng)行退出Vi時(shí),,可使用命令 :q! Vi放棄所作修改而直接退到shell下。 在末行模式下,,輸入命令 :wq Vi將先保存文件,,然后退出Vi返回到shell。 在末行模式下,,輸入命令 :x 該命令的功能同命令模式下的ZZ命令功能相同,。
|