vi是一種文字模式全螢幕文字編輯軟體(Text Editor)。對初學者來說,vi是個很難用的工具,一般需要2個星期的時間才能得心應手。之所以介紹vi,其理由如下:

1. vi是Unix上的標準文字編輯軟體,不管哪個版本的Unix系統都會提供。想靠開發Unix的軟體混飯吃,必須熟練vi。

2. vi難用的原因之一,是只有文字模式,不能使用滑鼠。但也正因為如此,熟練者不用移動手去操作滑鼠,寫起程式來特別快.

3. vi難用的原因之二,是同一個畫面分成三種操作模式,每種模式又可下達複雜指令,初學者常會搞混。但vi所提供的複雜指令,對寫程式特別好用,一經試用便覺威力無窮。

另一個跟vi很像的軟體叫vim,算是vi的加強版,vi有的功能vim都有,還可以使用游標鍵。此處只介紹vi。

vi在操作上分成下面三種模式,你若搞不清楚現在在哪種模式,只用按鍵盤左上角的ESC鍵,就可以跳到Command Mode

1. Command mode( c-mode)

您一進入 VI 就是處於 c-mode,只能下按鍵指令,不能輸入文字。

這些指令可能是游標移動的指令,也可能是編輯指令或尋找替換指令。

2. Input mode(i-mode)

i 就會進入 i-mode,此時才可以鍵入文字,寫您的文章,按 Esc 又會回到 c-mode

3. Ed mode(command-line modee-mode)

按冒號:(別忘了 Shift )就會進入 e-mode,左下角會有一個冒號:出現,可下 ed 指令。ed是Unix裡另一種非常古老的行模式Text Editor所謂行模式,是一次只能觀看編輯一行文字,之所以會有這種模式,是因為遠古時代終端機的游標只能往下走(就像DOS視窗!),所以編輯軟體就只好這樣設計了。vi是由ed改良來的,因此保有ed的指令

也是按 Esc c-mode。反正正常狀態都是處於 c-mode,這樣才不會把您辛苦打字的文章給隨便搞亂掉。

4. 開檔:

vi test.txt

或進入 vi 後,使用冒號命令 :e test.txt,就可以編輯 test.txt 這個檔。

如果 test.txt 不存在的話,就會開一個以 test.txt 為名的新檔案。

5.游標移動:

c-mode之下:h向左,j向下,k向上,l向右,Ctrl-F下一頁,Ctrl-B上一頁,Ctrl-G顯示檔案的狀態,$到行尾,^到行頭

e-mode之下:輸入數字n就會移到第n行

6. 編寫文件

在c-mode底下可用的命令:

u: undo上一個命令

o: 在此行的後面新增一行

O: 在此行的前面新增一行

i: 在游標的前一個位置插入字元

I: 在此行的開頭插入字元

a: 在游標的後一個位置插入字元

A: 在此行的最後面加入字元

r: 更改游標所在的字元

R: 覆蓋游標後的字元(一直打字就一直蓋掉,直到按ESC)

cl: 改掉一個字元

cw: 把游標所在的一整個字改掉(此字最後一個字母會變成$, 直到按ESC前的所有輸入都會用來改掉這一個字)

cc: 改掉游標所在的一整行

x: 刪除一個字元

dw: 刪除一整個字

dd: 刪除一整行

D: 刪除到行尾

yy: 複製一整行

yw: 複製一整個字

Y: 複製一整行

p: 貼在游標後(下)

P: 貼在游標前(上)

.: 重複上一個編輯命令

/: 向下搜尋(會在螢幕左下角出現/符號,只要輸入要找的字然後Enter即可)

?: 向上搜尋

n: 搜尋下一個

N: 搜尋上一個

以上命令除uoOD以外,前面都可以加上數字,表示此命令執行的次數,如5dd表示刪除五行,5yw複製五個字

7.e-mode下面的命令:

如果您寫好您的文件,就可以按Esc回到 c-mode,然後按:到e-mode,在e-mode底下的命令為

w: 存檔

w 檔名: 另存到檔名

q: 離開vi

wq: 存檔然後離開

q!: 強迫離開vi

w!: 強迫存檔

x: 存檔後離開, 但若檔案沒有修改,則不會存檔

!gcc test.c: !可用來呼叫shell執行命令, 此例中呼叫gcc編譯test.c

shell: 呼叫shell(回到命令列), 在shell中打exit則回到vi

r 檔名: 將檔名的內容讀到游標所在的行後

1,$s/abc/def/g: 由第一行到最後一行將所有的abc取代成def,若最一個/g不打, 則只取代每行的第一個

1,10s/abc/def/g:由第一行到第十行將所有的abc取代成def

 

基本Unix操作指令

df 顯示系統可使用空間

 ls 顯示資料檔案, ls -l可顯示更多的資訊

cp 複製檔案 cp file1 file2

mv 更改檔案名稱 mv file1 file2

rm 刪除檔案名稱 rm file1

passwd 更改password

mkdir 建立目錄 mkdir 目錄名稱

rmdir 刪除目錄 rmdir 目錄名稱

man 找出相關指令的說明,類似help的功能 man finger