vi文本編輯器

vi文本編輯器

vi是一種模式編輯器。vi 是Unix世界裡極為普遍的全螢幕幕文本編輯器,幾乎可以說任何一台Unix機器都會提供這套軟體。

歷史,基本編輯命令,

歷史

直到Emacs的出現(1984年以後),vi幾乎是所有“黑客”所使用的標準UNIX編輯器。從2006年開始,作為“單一UNIX規範”(SingleUNIXSpecification)的一部分,vi或vi的一種變形版本一定會在UNIX中找到。
直到現在,vi仍然被廣泛的使用,並且贏得1991年在USENET的票選;vi比Emacs的Bulkier版本啟動的更快,並且占記憶體更少。因此,甚至Emacs的追隨者又重新使用vi,並且作為郵件編輯器和其他小型編輯工作的首選。1999年著名的O'reilly賣出了比emacs更多的vi參考書。
當救急軟碟作為恢復硬碟崩潰的媒介以來,vi通常被用戶選擇,因為一張軟碟正好存儲下vi,並且幾乎所有人都可以很輕鬆的使用vi。
在編輯器的大戰中,vi和Emacs是作戰的雙方。
工作方式
vi一共有三種工作方式:命令方式、插入方式和行方式:
一、命令方式
無論用戶處於什麼狀態,按Esc鍵或組合鍵Ctrl [ 就可以進入命令方式。當用戶初始進入vi時,也處於這個狀態。用戶在命令方式下可以輸入各種合法的vi內部命令,這些命令不會回顯,而且不需要回車就會被執行。
二、文本插入方式
在命令方式下使用某些命令會導致vi馬上進入文本插入方式,這些命令包括:i,I,a,A,o,O等。在這種方式下用戶的任何輸入都被當作是檔案的內容看待,並將其顯示在螢幕上。
三、最後行方式
行方式又稱為最後行方式,通過在命令方式下鍵入冒號可進入這個方式,在這種方式下vi會在螢幕的最後一行顯示一個冒號並等待用戶輸入命令。行方式下用戶輸入的命令將回顯在最後一行上,並且直到用戶輸入回車vi才會去執行它。命令執行完畢後,vi自動進入命令狀態。或者在輸入命令時敲Esc鍵或組合鍵Ctrl [ 、或用退格鍵刪除所有的輸入之後再按一下退格鍵回到命令方式

基本編輯命令

移動游標(cursor movement)
-Bksp 左移一個字元
-Space 右移一個字元
-Enter, 下移一行
-h 左移一個字元
-l 右移一個字元
-j 下移一行
-k 上移一行
-nG 跳到第n行
-w,W跳到下一個詞的詞頭
-b,B跳到上一個詞的詞頭
-e,E 跳到下一個詞的詞尾
-^ 跳到行首(第一個非空字元)
-0 跳到行首
-$ 跳到行尾
-Ctrl-u 向下翻滾1/2屏
-Ctrl-d向上翻滾1/2屏
-Ctrl-f 向下翻滾1屏
-Ctrl-b 向上翻滾1屏
-Ctrl-n 向下移動一行
-Ctrl-p 向上移動一行
修改文本命令(modification)
[n]r 用字元char代替游標處的字元,n指定字元char出現的次數。n預設為1。
[n]R 用text的內容替換當前行n次。 n預設為1。命令執行完後處於插入方式,必須按Esc鍵或組合鍵 Ctrl [回到命令方式。
Cw,cw,cc 替換一個詞或替換到行尾
編輯中的每一行正文都有自己的行號,用下列命令可以移動游標到指定行:
:n將游標移到第n行
命令模式下,可以規定命令操作的行號範圍。數值用來指定絕對行號;字元“.”表示游標所在行的行號;字元 符“$”表示正文最後一行的行號;簡單的表達式,例如“. 5”表示當前行往下的第5行。例如: :345將游標移到第345行
在編輯模式下正確定位游標之後,可用以下命令切換到插入模式(Insert):
i 在游標左側輸入正文
I 在游標所在行的開頭輸入正文
a在游標右側輸入正文
A 在游標所在行的末尾輸入正文
o 在游標所在行的下一行增添新行
O 在游標所在行的上一行增添新行
刪除文本命令(delete)
x 刪除當前游標所在位置的字元
X 刪除游標前的字元
dd 刪除當前行
D 刪除從當前游標位置直到行尾的所有字元
d 刪除從當前游標位置直到參數指定的位置
字元串搜尋(search)
/[pattern]/[offset]
/[pattern]
?[pattern]?[offset]
?[pattern]
上述四個命令分別表示向下/向上搜尋指定的正則表達式[pattern],並將游標停留在相對搜尋結果距離為[offset]行處。
搜尋得到結果後,可以使用重複命令n或N沿著相同或相反的方向重複上一次的搜尋。f命令在當前行搜尋指定的字元並將游標停在匹配字元上。t命令在當前行搜尋指定的字元並將游標停在匹配字元的左邊
字元串替換(Substitute)
此命令要求先進入行方式
命令的語法為:
[addr1,addr2|g]s/find_exp/repl_exp/[g|n][c]
上述命令表示在第addr1行到addr2行的範圍內將字元串find_exp用repl_exp代替。
n表示替換每行的第n個匹配,c表示需要用戶確認
g放在命令末尾,表示行全程,不加g,表示只對搜尋字元串的首次出現進行替換;g放在命令開頭,表示對正文中所有包含搜尋字元串的行進行替換操作。
在很多Linux系統中調用vi時,實際上正在調用vim文本編輯器,它運行在vi兼容模式下。進行大量編程工作的人可能更願意使用vim,因為它以不同的顏色顯示不同的代碼層次。vim還有一些其他有用的功能,例如在打開文檔時,將游標放在最後一次退出檔案時游標所在的位置。

相關詞條

熱門詞條

聯絡我們