vi是一種文字模式全螢幕文字編輯軟體(Text Editor)。對初學者來說,vi是個很難用的工具,通常須要2個星期的時間才能得心應手。之因此介紹vi,其理由以下:shell
- vi是Unix上的標準文字編輯軟體,無論哪個版本的Unix系統都會提供。想靠開發Unix的軟體混飯吃,必須熟練vi。
- vi難用的緣由之一,是隻有文字模式,不能使用滑鼠。但也正因為如此,熟練者不用移動手去操做滑鼠,寫起程式來特別快.
- vi難用的緣由之二,是同一個畫面分紅三種操做模式,每種模式又可下達複雜指令,初學者常會搞混。但vi所提供的複雜指令,對寫程式特別好用,一經試用便覺威力無窮。
另外一個跟vi很像的軟體叫vim,算是vi的加強版,vi有的功能vim都有,還可使用遊標鍵。此處只介紹vi。
vi在操做上分紅下面三種模式,你若搞不清楚現在在哪種模式,只用按鍵盤左上角的ESC鍵,就能夠跳到Command Mode
- Command mode( c-mode):
您一進入 VI 就是處於 c-mode,只能下按鍵指令,不能輸入文字。
這些指令多是遊標移動的指令,也多是編輯指令或尋找替換指令。
- Input mode(i-mode):
按 i 就會進入 i-mode,此時才能夠鍵入文字,寫您的文章,按 Esc 又會回到 c-mode。
- Ed mode(command-line mode,e-mode):
按冒號:(別忘了 Shift 鍵)就會進入 e-mode,左下角會有一個冒號:出現,可下 ed 指令。ed是Unix裡另外一種很是古老的行模式Text Editor。所謂行模式,是一次只能觀看編輯一行文字,之因此會有這種模式,是因為遠古時代終端機的遊標只能往下走(就像DOS視窗!),因此編輯軟體就只好這樣設計了。vi是由ed改良來的,所以保有ed的指令。
也是按 Esc 回 c-mode。反正正常狀態都是處於 c-mode,這樣纔不會把您辛苦打字的文章給隨便搞亂掉。
- 開檔:
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行vim
- 編寫文件: 在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