學習vi和vim編輯器(1):vi文本編輯器

UNIX系統中有很多編輯器,可以分爲兩種類型:行編輯器和全屏編輯器。行編輯器每次只能在屏幕中顯示文件的一行,如ed和ex編輯器,全屏編輯器可以在屏幕上顯示文件的一部分。

vi(讀爲vee-eye)編輯器是UNIX_Like操作系統的標準文本編輯器。vi是 visual editor的縮寫,vi編輯器屬於全屏編輯器,可以在閱讀文件時當場就修改,並且立刻看到修改後的結果。對於新手而言,vi編輯器難度還是非常大的,但是一旦熟悉了vi編輯器,可能就再也不想重新使用其他“簡單”的編輯器了。學習vi編輯器時,要學着把編輯工作交給計算機。因爲這本來就是計算機的工作。

vi編輯器有兩種模式:命令模式和插入模式。在命令模式中,所輸入的一切都會被vi編輯器解釋爲輸入的命令。而在插入模式中,所輸入的一切都會被當做輸入的文本插入到正在編輯的文件。在vi編輯器中,命令有如下特點:

 * 命令是大小寫敏感的,也就是區分大小;

 * 輸入命令時,命令不會顯示在屏幕上;

 * 輸入完命令後不需要加入enter鍵。

同時有一組命令會顯示在屏幕的底端,在這些命令前有特殊的符號,例如冒號(:)用於開始所有的ex命令。vi編輯器使用的底層編輯器就是ex行編輯器,vi只是其可視化的模式。因此可以在vi編輯器中使用ex編輯器的命令。

既然是文本編輯器,那麼首先需要學習的就是如何打開與關閉文件。可以使用vi編輯器來編輯任何文本,需要說明的是,vi將需要編輯的文件內容複製到內存中的緩衝區中,因此我們修改的只是內存中文件的副本,只有將緩衝區裏的文件內容進行存儲,才能將對文件的編輯結果更新到磁盤中的文件中。存儲緩衝區的文件內容就是我們通常所說的“寫入文件”或者說“保存文件”。

打開文件: vi [filename]

 如果沒有指定filename,那麼vi將打開一個未命名的緩衝區,當我們將緩衝區裏的內容寫入到文件時,此時需要指定filename。如果filename當前已經存在,則是編輯一個已存在的文件,如果filename不存在,則相當於創建一個新的文件(需要將創建的緩衝區保存纔會真的產生一個名爲filename的文件),當打開一個新的文件時,vi編輯器的底部狀態欄會有相應消息,如圖所示:


打開文件時遇到的問題:

* 你認爲應該是編輯一個現有文件,但是vi編輯器卻顯示 "[New File]"。這個問題可以肯定的說是你輸入的文件名出錯了。

* 出現如下圖所示的[readonly],"Permission denied"等消息。這是因爲你對該文件沒有寫權限或者使用了vi編輯器的查看模式(vi -R)

* 輸入 :q 命令離開時,卻出現如下警告:

這是因爲你修改了文件(很可能你自己都不知道修改了哪裏),由於此時文件已經發生了變動,vi編輯器一定會讓你選擇是否保存編輯結果才能離開,因此此時可以使用 ZZ命令保存修改結果然後退出,或者使用 :q! 不保存編輯結果然後離開。

保存與離開文件:

ZZ命令: 保存編輯結果,離開vi編輯器。還可以使用ex命令來保存編輯結果, :w 命令只保存(寫入)編輯結果,不離開編輯器。 :wq 命令保存編輯結果離開vi編輯器(:wq 與 ZZ 命令相同)

結束而不保存編輯結果:

 :e! 命令:該命令可以消除所有的編輯結果,直接回到最近一次存儲時的文件內容,也就是說可以“從頭再來”。 :q! 命令也是直接忽略當前的編輯結果,回到上一次存儲時的文件內容,同時離開vi編輯器。 爲什麼這兩個命令後面都有感嘆號呢,因爲 :e 和  :q 命令都會讓當前的編輯效果消失,而vi編輯器一般不會讓你放棄編輯結果,因此加上感嘆號後,就可以使vi不理會這個禁令,直接將當前的編輯結果放棄,回到最近一次存儲時的文件內容。

保存文件時發生的問題:

* 寫了半天,發現沒有寫權限。 可以使用  :w filename 將當前結果寫入到一個新的文件(由於此時會在目錄中新創建一個文件,因此需要將該文件寫入到一個對你而言具有寫權限的目錄下)

* 嘗試寫文件,卻發現文件系統已滿。這個解決方法由很多,一方面可以將該文件寫入到具有剩餘空間的文件系統,另一面可以直接輸入: !sh 回到shell環境中刪除當前文件系統的一些大文件。在ex命令中可以用感嘆號後面接UNIX命令,直接執行相應的UNIX命令。如下圖所示,輸入 :!pwd 顯示當前目錄:


輸入命令之後就會暫時退出vi編輯器,顯示出命令執行的結果:

此時按下enter鍵後就能重新回到vi編輯器了。


本章vi編輯器命令總結:

ZZ,:w, :q, :wq, :q!, :e! 。 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章