转载 ---------------- vi 編輯器簡介

来源:互联网 发布:mac上android真机调试 编辑:程序博客网 时间:2024/05/18 18:46

原文地址:  http://phys.thu.edu.tw/~kkng/comp2010/vi.htm


vi 是 Linux 系統內建的全螢幕編輯器 (editor),功能強大,而且所有的 UNIX 系統上都有,操作方法也相同,是編輯器中的「國際語言」。但是對於習慣使用 word、記事本這些圖形介面編輯器的使用者而言,不是十分容易上手,不過熟悉以後,用起來十分順手,對於程式設計者而言,更是最佳幫手。

要深入學習 vi,可參考 O'Reilly 出版的「精通 vi」(中文版)一書。

啟動 vi

在提示號下鍵入「vi」,可以看到以下畫面:

這個時候,你還無法輸入任何內容,先按「:q」退出。

vi 編輯器的三種模式

1. Normal mode (指令模式 command mode,以下簡稱 c-mode)

進入 vi 時處於 c-mode,只能下按鍵指令,不能輸入文字。指令的使用方式將於後面介紹。

2. Insert mode (輸入模式 i-mode)

在 c-mode 下按 a,  i  等指令就會進入 i-mode,此時才可以鍵入文字編輯檔案,a是append,由游標後方開始編輯,i 是 insert,由游標前方開始編輯,按 Esc 又會回到 c-mode。

3. Ed mode (命令列模式 command-line modee-mode)

在 c-mode 下按冒號「:」就會進入 e-mode,左下角會有一個冒號:出現可下 ed(linux下的行編輯器名稱) 指令。下完指令後,或是按 Esc 回 c-mode。

再次啟動 vi

vi test.txt

會打開 test.txt 檔案,若檔案不存在,則會開一空白新檔案。以 vi 編輯的皆為純文字檔,可在螢幕左下角看到:

此時在 c-mode 下,無法輸入文字,按「i」或「a」鍵,轉為 i-mode,即可開始輸入,可以看到左下角提示「INSERT」,表示現在正在 i-mode 下。

存檔與退出:按「Esc」鍵,由輸入模式回到指令模式,接著按冒號「:」進入命令列模式,此時左下角會出現冒號與閃爍游標,此時可以在冒號後輸入以下指令:

w: 存檔(write)。注意在編輯過程中所有內容只存在暫存器裡,必須在 c-mode 下了這個「:w」指令才會存檔。

e: 重新編輯(edit)。

q: 退出(quit),如果檔案經過修改而沒有存檔,會出現錯誤訊息:

此時又會回到 c-mode,如果要強制退出,鍵入「:q!」(此次作的修改會流失),要存檔後退出,則鍵入「:wq」。同樣地,如果有修改過而下了「:e」指令,也會出現類似錯誤訊息,此時若按「:e!」強迫重新編輯,則此次做的修改亦會流失,回到上次存檔後的狀況。

移動游標:

在編輯檔案的過程中,經常需要在 c-mode 下,將游標移動到要修改現有文字或是插入新文字的地方,在 vi 中有許多移動游標的方式:

h: 向左一個字元

l: 向右一個字元

k: 向上一行

j: 向下一行

數字 0: 移到該行行首

$: 移到該行行尾

w: 移到下一個字(字的定義是以兩個空白字元中間為一個字)

b: 移到前一個字

Ctrl-f: 向後翻一頁

Ctrl-b: 向前翻一頁

Ctrl-d: 向後翻半頁

Ctrl-u: 向前翻半頁

zt: 將游標所在的位置移到螢幕中的第一行; zb: 最後一行; zz: 中央-行

H: 將游標移到螢幕頂端那一行

M: 將游標移到螢幕中央那一行

L: 將游標移到螢幕底端

G: 移到檔案底端

<number>G: 移到第 <number> 行,例如 5G 即會移到第五行

gg: 移到檔案頂端

 

這些移動游標的命令,都可以在前面加上數字,表示「重複這個動作 n 次」。如「5 Ctrl-F」(先按 5,再同時按 Ctrl-F),則會向後翻五頁。

 

基本編輯指令:

 

進入編輯模式,插入新文字:a, A, i, I, o, O

a: 由游標後開始插入文字

A: 由游標所在該行行尾輸入文字

i: 由游標前開始插入文字

I: 由游標所在行頭輸入文字

o: 游標下方出現一行新的空行,開始插入文字

O: 游標上方出現一行新的空行,開始插入文字

 

練習:以 vi 建立一個新檔案,用「i」指令進入輸入模式,輸入一些文字,嘗試使用上面所介绍的游標指令和編輯指令,最後存檔離開。

 

 問題:你可以啟動兩個vi同時修改同一個檔案嗎?

 

基本上,在i-mode 下,只要使用鍵盤上的箭頭和backspace,就可以進行文字輸入,但若要更有效的編輯,就需要學會使用下面的指令。

 

進入編輯模式,更改舊文字:c, C

cw: 修改從游標到所在單字的結尾

c2b: 修改從游標往前的兩個單字

c$: 修改從游標到本行結尾

c0: 修改從行頭到游標位置

cc: 修改游標所在整行

C: 跟 c$ 效果相同

 

保持在命令模式,更改一個字元:r

rK: 將游標所在位置之字元以「K」置換

 

保持在命令模式,刪除舊文字:d, D

dw: 刪除從游標位置到該單字之結尾

dd: 刪掉一整行

5dd: 刪掉五行

d0: 從游標往前刪到該行開頭

d$: 從游標往後刪到該行結尾

D: 效果跟 d$ 相同

 

保持在命令模式,刪除一個字元:x

x: 刪除游標所在的字元

7x: 刪除從游標開始的連續七個字元(含游標所在處)

X: 刪除游標前一個字元

4X: 刪除游標前連續四個字元(不含游標所在處)

 

練習:找到「.viminfo」這個檔案,拷貝到你的資料夾中,並以這個檔案來練習上述的各個編輯功能。

 

保持在命令模式,恢復前一個動作:u, U

u: 即 undo,取消前一個動作

U: 將游標所在該行恢復原狀

 

將兩行合併:J

按下大寫「J」,則游標所在的下一行將會接到游標所在的這行後面,合併成為一行。

 

暫存區:p, P, y

p: 被刪除的內容,會被存在暫存區中,按一下「p」,被刪除的部分將會被貼上。如果刪除不到一行的內容,則按「p」被刪除的內容會被貼在游標之後,如果刪除整行或數行,則會被貼在游標所在的下一行。

P: 暫存區內容會被貼在游標前面或前一行。

y: 複製文字至暫存區中,組合鍵使用方法類似「d」:

yw: 複製從游標位置到該單字之結尾

yy: 複製一整行

5yy: 複製五行

y0: 從游標往前複製到該行開頭

y$: 從游標往後複製到該行結尾

Y: 效果跟 y$ 相同

*利用 yd與 p的組合即可做出剪下、複製、貼上的動作。

 

重複前一個動作:.

按下句點「.」,可重複前一個動作。

 

搜尋與取代:

在 c-mode 中鍵入: 

/<字串>

 

游標將移至該字串下一次出現之處。如果接著按「n」鍵,則會再找下一個,如果按「N」鍵則會往上尋找上一個。

若開始時鍵入

?<字串>

 

則會往前尋找,接著按「n」鍵,則會再找上一個,如果按「N」鍵則會往後尋找下一個。 

搜尋的時候,你會發現在文件中要搜尋的字串都被highlight,若要取消highlight,可以輸入以下指今:

:nohlsearch

即no highlight search 。

在命令列模式中,搜尋檔案中所有出現的字串「string1」並將之全部取代為「string2」:

:g/string1/s//string2/g

 

一個不錯的 vi 使用教學參考網站

 

練習:編輯一文字檔內容如下:

 

program myprogram

   print*, "Hello, world!"

end program

 

把檔案便儲存為myprogram.f90,並用gfortran編譯後執行︰

$ gfortran myprogram.f90

$ ./a.out

 

輸出:

$ Hello, world!

 

練習:修改上列檔案,用符號組合成你的中文名字。

例:

 


0 0
原创粉丝点击