4.3.3 vi編輯器
要在Linux下編寫文本或語言程序,首先必須選擇一種文本編輯器。我們可以選擇使用vi編輯器,使用它的好處是幾乎每一個(gè)版本的Linux都會(huì)有它的存在。然而它是在文本模式下使用,需要記憶一些基本的命令操作方式。也可以選擇使用pico、joe、jove編輯器等,它們都比vim簡單。如果實(shí)在不習(xí)慣使用文字模式,可以選擇視窗環(huán)境下的編輯器,像gedit、Kate等,或是使用KDevelop,它是在Linux中的X Window下執(zhí)行的C/C++整合式開發(fā)環(huán)境。
vi編輯器是Visual Interface的簡稱。vi編輯器是Linux和UNIX上最基本的文本編輯器,工作在字符模式下,只有命令操作,且命令繁多。它可以執(zhí)行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據(jù)自己的需要對其進(jìn)行定制。但是不可以對字體、格式、段落等其他屬性進(jìn)行編排,因?yàn)樗皇且粋€(gè)文本編輯程序。由于不需要圖形界面,使它成了效率很高的文本編輯器。盡管在Linux上也有很多圖形界面的編輯器可用,但vi在系統(tǒng)和服務(wù)器管理中的強(qiáng)大功能是那些圖形編輯器所無法比擬的。vim是vi的加強(qiáng)版,比vi更容易使用。vi的命令幾乎全部都可以在vim上使用。
1. vi的基本概念
基本上vi可以分為三種狀態(tài),分別是:命令行模式(command mode)、插入模式(insert mode)和底行模式(last line mode)。
命令行模式
控制屏幕光標(biāo)的移動(dòng),字符、字或行的刪除,移動(dòng)復(fù)制某區(qū)段并進(jìn)入插入模式下,或者到底行模式。
插入模式
只有在插入模式下,才可以做文字輸入,按ESC鍵可回到命令行模式。
底行模式
將文件保存或退出vi,也可以設(shè)置編輯環(huán)境,如尋找字符串、列出行號等。不過一般我們在使用時(shí)把vi簡化成兩個(gè)模式:插入模式和命令行模式,也就是說將底行模式也算入命令行模式。
2.vi的基本操作
進(jìn)入vi
打開系統(tǒng)終端,在提示符后直接輸入vi或者vi加上文件名稱后,就進(jìn)入vi編輯畫面。第一種方法是開啟了一個(gè)新的文檔,第二種方法則是載入已經(jīng)存在的文檔,進(jìn)入編輯狀態(tài)。如圖4-2所示為輸入vi顯示的歡迎界面。
- $vi
或者
在進(jìn)入vi之后,是處于"命令行模式",要切換到"插入模式"才能夠輸入文字。如果此時(shí)你按鍵盤上的上下左右鍵,電腦只會(huì)發(fā)出"嗶嗶"的聲音。
- $vi myfile
(點(diǎn)擊查看大圖)圖4-2 vim的主界面 |
切換至插入模式
在"命令行模式"下按一下字母i、a或者o就可以進(jìn)入"插入模式",這時(shí)就可以開始輸入文字了。注意三種方法是有區(qū)別的:按"i"進(jìn)入插入模式后是從光標(biāo)的當(dāng)前位置開始輸入文件;按"a"進(jìn)入插入模式后,是從目前光標(biāo)所在位置的下一個(gè)位置開始輸入文字;按"o"進(jìn)入插入模式后,是插入新的一行,從行首開始輸入文字。
Insert 的切換
處于"插入模式"時(shí),只能輸入文字。如果發(fā)現(xiàn)輸錯(cuò)了字需要光標(biāo)鍵往回移動(dòng)將該字刪除,就需要先切換到命令行模式。具體操作就是按一下"ESC"鍵轉(zhuǎn)到"命令行模式"再刪除文字。
退出vi及保存文件
命令行模式模式是vi或vim的默認(rèn)模式。在"命令行模式"下,按一下":"冒號鍵進(jìn)入底行模式。一些常用的命令羅列如下:
:w 保存;
:w filename 當(dāng)前文本另存為filename;
:wq! 保存退出;
:wq! filename 以filename為文件名保存后退出;
:q! 不保存退出。
移動(dòng)光標(biāo)
在命令行模式下,移動(dòng)光標(biāo)的命令有:
j 向下移動(dòng)一行;
k 向上移動(dòng)一行;
h 向左移動(dòng)一個(gè)字符;
l 向右移動(dòng)一個(gè)字符;
Ctrl+b 向上移動(dòng)一屏;
Ctrl+f 向下移動(dòng)一屏;
↑ 向上移動(dòng);
↓ 向下移動(dòng);
← 向左移動(dòng);
→ 向右移動(dòng);
編輯一個(gè)文件時(shí),對于 j、k、l和h鍵,還能在這些動(dòng)作命令的前面加上數(shù)字,比如3j,表示向下移動(dòng)3行,2h表示向右移動(dòng)2行。
刪除文字
x 刪除一個(gè)字符;
#x 刪除幾個(gè)字符,#表示數(shù)字,比如3x表示刪除三個(gè)字符;
dw 刪除一個(gè)單詞;
#dw 刪除幾個(gè)單詞,#用數(shù)字表示,比如3dw表示刪除三個(gè)單詞;
dd 刪除一行;
#dd 刪除多個(gè)行,#代表數(shù)字,比如3dd 表示刪除光標(biāo)行及光標(biāo)的下兩行;
d$ 刪除光標(biāo)到行尾的內(nèi)容;
復(fù)制和粘貼的操作
其實(shí)刪除也帶有剪切的意思,當(dāng)我們刪除文字時(shí),可以把光標(biāo)移到某處,然后按Shift+p鍵就把內(nèi)容貼在原處,然后再移動(dòng)光標(biāo)到某處,再按p或Shift+p又能貼上;
p 在光標(biāo)之后粘貼;
Shift+p 在光標(biāo)之前粘貼
例如:要求把一個(gè)文檔的第三行復(fù)制下來,然后貼到第五行的后面。有以下兩種方法。
第一種方法:先把第三行刪除,把光標(biāo)移動(dòng)到第三行處,然后用dd動(dòng)作,接著再按一下Shift+p鍵。這樣就把剛才刪除的第三行帖在原處了。接著我們再用k鍵移動(dòng)光標(biāo)到第五行,然后再按一下p鍵,就把第三行的內(nèi)容又貼到第五行的后面了。
第二種方法:進(jìn)入可視模式,按ESC鍵,然后按v鍵。移動(dòng)鼠標(biāo)指針,選中第三行的內(nèi)容,然后按y鍵復(fù)制;再移動(dòng)指針到第五行,按p鍵;所以復(fù)制和粘貼操作,是命令模式、插入模式及可視模式的綜合運(yùn)用;我們要學(xué)會(huì)各種模式之間的切換,要常用ESC鍵;更為重要的學(xué)會(huì)在命令模式下移動(dòng)光標(biāo)。
3. 底行模式
在使用底行模式之前,先按"ESC"鍵處于命令行模式下后,再按":"冒號即可進(jìn)入底行模式。多數(shù)文件管理命令都是在此模式下執(zhí)行的,例如把編輯緩沖區(qū)的內(nèi)容寫到文件中等。底行命令執(zhí)行完成之后,vi會(huì)自動(dòng)進(jìn)入命令行模式。例如下面的命令:
- :$s/A/a/g
表示從文件第一行至文件尾將大寫A全部替換成小寫a。若在命令行模式下輸入命令過程中改變了主意,可按ESC鍵或者退格鍵全部刪除輸入的命令,再按一下退格鍵回到命令行模式。底行模式的常用操作有:
列出行號
":set nu":在文件中的每一行前面列出行號。
跳到文件中的某一行
":#":"#"號表示一個(gè)數(shù)字,在冒號后輸入一個(gè)數(shù)字,再按回車鍵就會(huì)跳到該行了,如輸入數(shù)字15,再回車,就會(huì)跳到文章的第15行。
查找字符
":/關(guān)鍵字":先按"/"鍵,再輸入您想尋找的字符,如果第一次找的關(guān)鍵字不是您想要的,可以一直按"n"往后尋找到您要的關(guān)鍵字。
":?關(guān)鍵字":先按"?"鍵,再輸入您想尋找的字符,如果第一次找的關(guān)鍵字不是您想要的,可以一直按"n"會(huì)往前尋找到您要的關(guān)鍵字。
保存文件
":w":在冒號后輸入字母[w]就可以將文件保存起來。
離開vi
":q":按[q]就是退出,如果無法離開vi,可以在"q"后跟一個(gè)"!"強(qiáng)制離開vi。
":qw":一般建議離開時(shí)搭配"w"一起使用,這樣在退出的時(shí)候還可以保存文件。
以上所介紹的都是vi編輯器中常用的命令,需要熟練掌握。對于初學(xué)者,特別是那些熟悉了圖像界面操作的學(xué)員來說,使用vi可能會(huì)覺得特別不順手。如果經(jīng)常在Linux下工作,就會(huì)發(fā)現(xiàn)vi編輯器其實(shí)非常方便。
聯(lián)系客服