· 一般模式:以 vi 處理一個(gè)檔案的時(shí)后,一進(jìn)入該檔案就是一般模式了。在這個(gè)模式中,你可以使用『上下左右』按鍵來(lái)移動(dòng)光標(biāo),您可以使用『刪除字符』或『刪除整行』來(lái)處理檔案內(nèi)容,也可以使用『復(fù)制、貼上』來(lái)處理您的文件資料。
· 編輯模式:在一般模式中可以處理刪除、復(fù)制、貼上等等的動(dòng)作,但是卻無(wú)法編輯的!要等到您按下『i, I, o, O, a, A, r, R』等字母之后才會(huì)進(jìn)入編輯模式。注意了!通常在 Linux 中,按下上述的字母時(shí),在畫(huà)面的左下方會(huì)出現(xiàn)『 Insert 或 Replace 』的字樣,才可以輸入任何字來(lái)輸入到您的檔案中!!而如果要回到一般模式時(shí),則必須要按下『Esc』這個(gè)按鍵即可退出編輯模式。
· 指令列命令模式:在一般模式當(dāng)中,輸入『 : 或 / 』就可以將光標(biāo)移動(dòng)到最底下那一行,在這個(gè)模式當(dāng)中,可以提供您『搜尋資料』的動(dòng)作,而讀取、存盤(pán)、大量取代字符、離開(kāi) vi 、顯示行號(hào) 等等的動(dòng)作則是在此模式中達(dá)成的!
...........................
vi操作指南
立志在linux有所建樹(shù),就必須要熟悉linux文字編輯利器vi
基本上 vi 共分為三種模式,分別是『一般模式』、『編輯模式』與『指令列命令模式』三種!
· 一般模式:以 vi 處理一個(gè)檔案的時(shí)后,一進(jìn)入該檔案就是一般模式了。在這個(gè)模式中,你可以使用『上下左右』按鍵來(lái)移動(dòng)光標(biāo),您可以使用『刪除字符』或『刪除整行』來(lái)處理檔案內(nèi)容,也可以使用『復(fù)制、貼上』來(lái)處理您的文件資料。
· 編輯模式:在一般模式中可以處理刪除、復(fù)制、貼上等等的動(dòng)作,但是卻無(wú)法編輯的!要等到您按下『i, I, o, O, a, A, r, R』等字母之后才會(huì)進(jìn)入編輯模式。注意了!通常在 Linux 中,按下上述的字母時(shí),在畫(huà)面的左下方會(huì)出現(xiàn)『 Insert 或 Replace 』的字樣,才可以輸入任何字來(lái)輸入到您的檔案中!!而如果要回到一般模式時(shí),則必須要按下『Esc』這個(gè)按鍵即可退出編輯模式。
· 指令列命令模式:在一般模式當(dāng)中,輸入『 : 或 / 』就可以將光標(biāo)移動(dòng)到最底下那一行,在這個(gè)模式當(dāng)中,可以提供您『搜尋資料』的動(dòng)作,而讀取、存盤(pán)、大量取代字符、離開(kāi) vi 、顯示行號(hào) 等等的動(dòng)作則是在此模式中達(dá)成的!
一般模式: 移動(dòng)光標(biāo)
h 或 向左方向鍵 光標(biāo)向左移動(dòng)一個(gè)字符
j 或 向下方向鍵 光標(biāo)向下移動(dòng)一個(gè)字符
k 或 向上方向鍵 光標(biāo)向上移動(dòng)一個(gè)字符
l 或 向右方向鍵 光標(biāo)向右移動(dòng)一個(gè)字符
[Ctrl] + [f] 屏幕『向前』移動(dòng)一頁(yè)(常用)
[Ctrl] + [b] 屏幕『向后』移動(dòng)一頁(yè)(常用)
[Ctrl] + [d] 屏幕『向前』移動(dòng)半頁(yè)
[Ctrl] + [u] 屏幕『向后』移動(dòng)半頁(yè)
+ 光標(biāo)移動(dòng)到非空格符的下一列
- 光標(biāo)
/word 向光標(biāo)之后尋找一個(gè)字符串名稱為 word 的字符串。(常用)
?word 向光標(biāo)之前尋找一個(gè)字符串名稱為 word 的字符串。
:n1,n2s/word1/word2/g 在第 n1 與 n2 行之間尋找 word1 這個(gè)字符串,并將該字符串取代為 word2 !(常用)
:1,$s/word1/word2/g 從第一行到最后一行尋找 word1 字符串,并將該字串取代為 word2 !(常用)
:1,$s/word1/word2/gc 從第一行到最后一行尋找 word1 字符串,并將該字串取代為 word2 !且在取代前顯示提示字符給使用者確認(rèn)(conform)是否需要取代!(常用)
一般模式: 刪除、復(fù)制與貼上
x, X x 為向后刪除一個(gè)字符, X 為向前刪除一個(gè)字符(常用)
nx 向后刪除 n 個(gè)字符
dd 刪除光標(biāo)所在的那一整列(常用)
ndd 刪除光標(biāo)所在的向下 n 列,例如 20dd 則是刪除 20 列(常用)
d1G 刪除光標(biāo)所在到第一行的所有資料
dG 刪除光標(biāo)所在到最后一行的所有資料
yy 復(fù)制光標(biāo)所在的那一行(常用)
nyy 復(fù)制光標(biāo)所在的向下 n 列,例如 20yy 則是復(fù)制 20 列(常用)
y1G 復(fù)制光標(biāo)所在列到第一列的所有資料
yG 復(fù)制光標(biāo)所在列到最后一列的所有資料
p, P p 為復(fù)制的數(shù)據(jù)在光標(biāo)下一行貼上,P 則為貼在光標(biāo)上一行!(常用)
J 將光標(biāo)所在列與下一列的資料結(jié)合成同一列
c 重復(fù)刪除多個(gè)資料,例如向下刪除 10 行,[ 10cj ]
u 復(fù)原前一個(gè)動(dòng)作。(常用)
進(jìn)入編輯模式
i, I 插入:在目前的光標(biāo)所在處插入輸入之文字,已存在的文字會(huì)向后退;(常用)
a, A 增加:由目前光標(biāo)所在的下一個(gè)字開(kāi)始輸入,已存在的文字會(huì)向后
退:(常用)
o, O 插入新的一行:從光標(biāo)所在的下一行枝行首開(kāi)始輸入文字;(常用) r, R 取代:r 會(huì)取代光標(biāo)所在的那一個(gè)字符;R會(huì)一直取代光標(biāo)所在的文字,直到按下 ESC 為止;(常用)
Esc 退出編輯模式,回到一般模式中(常用)
指令列命令模式
:w 將編輯的資料寫(xiě)入硬盤(pán)檔案中(常用)
:w! 若檔案屬性為『只讀』時(shí),強(qiáng)制寫(xiě)入該檔案
:q 離開(kāi) vi (常用)
:q! 若曾修改過(guò)檔案,又不想儲(chǔ)存,使用 ! 為強(qiáng)制離開(kāi)不儲(chǔ)存檔案。
:wq 儲(chǔ)存后離開(kāi),若為 :wq! 則為強(qiáng)制儲(chǔ)存后離開(kāi)(常用)
:e! 將檔案還原到最原始的狀態(tài)!
ZZ 若檔案沒(méi)有更動(dòng),則不儲(chǔ)存離開(kāi),若檔案已經(jīng)經(jīng)過(guò)更動(dòng),則儲(chǔ)存后離開(kāi)!
:w [filename] 將編輯的資料儲(chǔ)存成另一個(gè)檔案(類(lèi)似另存新檔)
:r [filename] 在編輯的資料中,讀入另一個(gè)檔案的資料。亦即將 『filename』這個(gè)檔案內(nèi)容加到光標(biāo)所在行后面
:set nu 顯示行號(hào),設(shè)定之后,會(huì)在每一行的前綴顯示該行的行號(hào)
:set nonu 與 set nu 相反,為取消行號(hào)!
n1,n2 w [filename] 將 n1 到 n2 的內(nèi)容儲(chǔ)存成 filename 這個(gè)檔案。
:! command 暫時(shí)離開(kāi) vi 到指令列模式下執(zhí)行 command 的顯示結(jié)果!例
如[ :! ls /home ]
OK!會(huì)這些指令就已經(jīng)很厲害了,因?yàn)槌S玫降闹噶钜仓挥胁坏揭话耄⊥?/p>
常 vi 的指令除了上面 VBird 注明的常用的幾個(gè)外,其它是不用背的,
你可以做一張簡(jiǎn)單的指令表在你的屏幕墻上,一有疑問(wèn)可以馬上的查詢呦
一個(gè)案例練習(xí)
來(lái)來(lái)來(lái)!測(cè)試一下您是否已經(jīng)熟悉 vi 這個(gè)指令呢?請(qǐng)依照底下的需求進(jìn)
行您的指令動(dòng)作( 請(qǐng)注意,該檔案為 Mandrake 9.0 所附上的檔案內(nèi)容,
如果是其它的 distribution ,可能結(jié)果會(huì)不太一樣! ),然后看一下結(jié)
果在屏幕前面顯示什么?
請(qǐng)?jiān)?/root 這個(gè)目錄下建立一個(gè)名為 vitest 的目錄;
進(jìn)入 vitest 這個(gè)目錄當(dāng)中;
將 /etc/man.config 拷貝到本目錄底下;
使用 vi 開(kāi)啟本目錄下的 man.config 這個(gè)檔案;
在 vi 中設(shè)定一下行號(hào);
移動(dòng)到第62 行,向右移動(dòng) 40 個(gè)字符,請(qǐng)問(wèn)您看到的雙引號(hào)內(nèi)是什么目
錄?
移動(dòng)到第一行,并且向下搜尋一下『 teTeX 』這個(gè)字符串,請(qǐng)問(wèn)他在第幾行?
接著下來(lái),我要將 50 到 100 行之間的 man 改為 MAN ,并且一個(gè)一個(gè)
挑選是否需要修改,如何下達(dá)指令?
修改完之后,突然反悔了,要全部復(fù)原,有哪些方法?
我要復(fù)制 51 到 60 行這十行的內(nèi)容,并且貼到最后一行之后;
刪除 11 到 30 行之間的 20 行;
將這個(gè)檔案另存成一個(gè) man.test.config 的檔名;
去到第 29 行,并且刪除 15 個(gè)字符;
請(qǐng)問(wèn)目前的檔案有多少行與多少字符?
儲(chǔ)存后離開(kāi)吧!
整個(gè)的步驟可以如下所示:
mkdir /root/vitest
cd /root/vitest
cp /etc/man.config .
vi man.config
: set nu
先按下 62G ,再按下 40 + 向右鍵,會(huì)看到『/dir/bin/foo』
先按下 1G ,然后按下 /teTeX 搜尋,會(huì)看到他在第 51 行!
:50,100s/man/MAN/gc
(1)簡(jiǎn)單的方法可以一直按 u 回復(fù)到原始狀態(tài),(2)使用不儲(chǔ)存離開(kāi) :q!
之后,再重新讀取一次該檔案
51G 然后在 10yy 之后按下 G 到最后一行,再給他 p 貼上十行!
11G 之后,再給他 20dd 即可刪除 20 行了;
:w man.test.config
29G 之后,再給他 15x 即可刪除 15 個(gè)字符;
135行,共 3903 個(gè)字符 :wq!
如果您的結(jié)果都可以查的到,那么 vi 的使用上面應(yīng)該沒(méi)有太大的問(wèn)題啦