vi是linux系統的第乙個全螢幕互動式編輯工具。它從誕生至今一直得到廣大使用者的青睞,歷經數十年後仍然是人們主要使用的文字編輯工具,足見其生命力之強,其強大的編輯功能可以同任何乙個最新的編輯器相媲美。
雖然用慣了windows中的word等編輯器的讀者在剛剛接觸vi時或多或少會有些不適應,但使用過一段時間後,就能感受到它的方便與快捷。
小知識:linux系統提供了乙個完整的編輯器家族系列,如ed、ex、vi和emacs等,按功能它們可以分為兩大類:行編輯器(ed、ex)和全螢幕編輯器(vi、emacs)。行編輯器每次只能對一行進行操作,使用起來很不方便。而全螢幕編輯器可以對整個螢幕進行編輯,使用者編輯的檔案直接顯示在螢幕上,從而克服了行編輯的那種不直觀的操作方式,便於使用者學習和使用,具有強大的功能。
vi的基本模式
vi編輯器具有3種工作模式,分別是命令列模式(command mode)、插入模式(insert mode)和底行模式(last line mode),各模式的功能區分如下。
1.命令列模式(command mode)
在該模式下使用者可以輸入命令來控制螢幕游標的移動,字元、單詞或行的刪除,移動複製某區段,也可以進入到底行模式或者插入模式下。
2.插入模式(insert mode)
使用者只有在插入模式下才可以進行字元輸入,使用者按[esc]鍵可回到命令列模式下。
3.底行模式(last line mode)
不過在一般使用時,人們通常把vi簡化成兩個模式,即將底行模式(last line mode)也歸入命令列模式中。
vi的基本操作
1.進入與離開vi
進入vi可以直接在系統提示符下鍵入vi <文件名稱>,vi可以自動載入所要編輯的文件或是建立乙個新的文件。如在shell中鍵入vi hello.c(新建文件)即可進入vi畫面。如圖1.1所示。
進入vi後螢幕最左邊會出現波浪符號,凡是有該符號就代表該行目前是空的。此時進入的是命令列模式。
要離開vi可以在底行模式下鍵入「:q」(不儲存離開),「:wq」(儲存離開)則是存檔後再離開(注意冒號)。如圖1.2所示。
圖1.1 在vi中開啟/新建文件
圖1.2 在vi中退出文件
2.vi中3種模式的切換
vi的使用中3種模式的切換是最為常用的,在處理的過程中,讀者要時刻注意螢幕左下方的提示。在插入模式下,左下方會有「插入」字樣,而在命令列或底行模式下則無提示。
(1)命令列模式、底行模式轉為插入模式
在命令列模式或底行模式下轉入到插入模式有3種方法,如表1.1所示。
命令列模式轉到插入模式
表1.1
在這裡,最常用的是「i」,在轉入插入模式後如圖1.3所示。
圖1.3 命令模式轉入插入模式
(2)插入模式轉為命令列模式、底行模式
從插入模式轉為命令列模式、底行模式比較簡單,只需使用[esc]鍵即可。
(3)命令列模式與底行模式轉換
命令列模式與底行模式間的轉換不需要其他特別的命令,而只需要直接鍵入相應模式中的命令鍵即可。
3.vi的刪除、修改與複製
在vi中進行刪除、修改都可以在插入模式下使用鍵盤上的方向鍵及[delete]鍵,另外,vi還提供了一系列的操作指令可以大大簡化操作。
這些指令記憶起來比較複雜,希望讀者能夠配合操作來進行實驗。以下命令都是在命令列模式下使用的。
表1.2所示為vi的刪除、修改與複製命令。
vi的刪除、修改與複製命令
表1.2
4.vi的游標移動
由於許多編輯功能都是通過游標的定位來實現的,因此,掌握vi中游標移動的方法很重要。雖然使用方向鍵也可以實現vi的操作,但vi的指令可以實現複雜的游標移動,只要熟悉以後都非常方便,希望讀者都能切實掌握。
表1.3所示為vi中的游標移動指令,這些指令都是在命令列模式下使用的。
vi中游標移動的命令
表1.3
5.vi的查詢與替換
在vi中的查詢與替換也非常簡單,其操作有些類似在telnet中的使用。其中,查詢的命令在命令列模式下,而替換的命令則在底行模式下(以「:」開頭),其命令如表1.4所示。
vi的查詢與替換命令
表1.4
6.vi的檔案操作指令
vi中的檔案操作指令都是在底行模式下進行的,所有的指令都是以「:」開頭,其命令如表1.5所示。
vi的檔案操作指令
表1.5
vi的使用例項分析
本文給出了乙個vi使用的完整例項,通過這個例項,讀者一方面可以熟悉vi的使用流程,另一方面也可以熟悉linux的操作,希望讀者能夠首先自己思考每一步的操作,再看後面的例項解析答案。
1.vi使用例項內容
(1)在/root目錄下建乙個名為vi的目錄。
(2)進入vi目錄。
(3)將檔案/etc/inittab複製到當前目錄下。
(4)使用vi編輯當前目錄下的inittab。
(5)將游標移到該行。
(6)複製該行內容。
(7)將游標移到最後一行行首。
(8)貼上複製行的內容。
(9)撤銷第9步的動作。
(10)將游標移動到最後一行的行尾。
(11)貼上複製行的內容。
(12)游標移到「si::sysinit:/etc/rc.d/rc.sysinit」。
(13)刪除該行。
(14)存檔但不退出。
(15)將游標移到首行。
(16)插入模式下輸入「hello,this is vi world!」。
(17)返回命令列模式。
(18)向下查詢字串「0:wait」。
(19)再向上查詢字串「halt」。
(20)強制退出vi,不存檔。
2.vi使用例項解析
在該例項中,每一步的使用命令如下所示。
(1)mkdir /root/vi
(2)cd /root/vi
(3)cp /etc/inittab ./
(4)vi ./inittab
(5)17< enter>(命令列模式)
(6)yy
(7)g
(8)p
(9)u
(10)$
(11)p
(12)21g
(13)dd
(14):w(底行模式)
(15)1g
(16)i 並輸入「hello,this is vi world!」(插入模式)
(17)esc
(18)/0:wait(命令列模式)
(19)?halt
(20):q!(底行模式)
嵌入式linux編輯器vi的使用
vi 命令 輸入 底行模式 插 入 insert i 從 光 標 所 在 位 置 前 面 開 始 插 入 資 料,光 標 後 的 資 料 隨 新 增 資 料 向 後 移 動。i 從 光 標列 的 第 一 個 非 空 白 字 符 前 面 開 始 插 入 資 料。開 始 open o 在 光 標 所 在...
嵌入式Linux中移植vim編輯器
近期在做嵌入式linux的開發,根檔案系統是基於busybox裁剪的。由於busybox中只有vi編輯器而沒有vim編輯器,而且vi編輯器用起來挺彆扭的,於是就想到了移植vim編輯器。步驟 2 將vim原始碼包解壓後,進入目錄vim74,由於在intel atom平台,vim有些特性不支援,在工程配...
嵌入式Linux vim編輯器支援中文
最近遇到了乙個問題,linux板子無法在vim中編輯中文,顯示都不能 但是cat 是可以正常檢視的 這就說明板子的系統是支援中文的,所以只需要把支援中文就可以了,如果你的板子不支援中文那就需要bootroot首先做乙個支援中文顯示的busybox檔案系統 這裡可以參考 按照上面的連線的做法,還不能解...