鳥哥:vim 程序編輯器

摘自《鳥哥的Linux私房菜》

系統管理員的重要工作就是修改與設定某些重要軟體的配置文件,因此至少得要學會一種文本編輯器。 所有的 Linux distributions 都會有的一個文本編輯器就是 vi ,而且很多軟體默認也是使用 vi 作為他們編輯的界面。

vim 是進階版的 vi , vim 不但可以用不同顏色顯示文字內容,還能夠進行諸如 shell script, C program 等程序編輯功能, 你可以將 vim 視為一種程序編輯器!

9.2 vi 的使用

vi 共分為三種模式,分別是『一般模式』、『編輯模式』與『命令行模式』。

一般模式

以 vi 打開一個文件就直接進入一般模式了(這是默認的模式)。在這個模式中, 你可以使用『上下左右』按鍵來移動游標,你可以『刪除字元』或『刪除整列』, 也可以『複製、粘貼』你的文件數據。

編輯模式

在一般模式中可以進行刪除、複製、粘貼等操作,但是卻無法編輯文件內容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一個字母之後才會進入編輯模式。通常在Linux中,按下這些按鍵時,在畫面的左下方會出現『INSERT 或REPLACE 』的字樣,此時才可以進行編輯。

而如果要回到一般指令模式時, 按下『Esc』即可退出編輯模式。

命令行模式

在一般模式當中,輸入『 : / ? 』三個中的任何一個按鈕,就可以將游標移動到最底下那一列。在這個模式當中, 可以提供你『查找數據』的操作,而讀取、保存、大量替換字元、離開 vi 、顯示行號等動作則是在此模式中達成的!

一般模式可與編輯模式及命令行模式切換, 但編輯模式與指令列模式之間不可互相切換喔。

9.2.2 按鍵說明

一般模式:

游標移動

  • 上下左右箭頭鍵:游標向指定方向移動一個字元
  • [Page Down]:屏幕『向下』移動一頁
  • [Page Up]:屏幕『向上』移動一頁
  • G: 移動到這個文件的最後一行
  • nG:n 為數字。移動到這個文件的第 n 行。
  • gg 移動到這個文件的第一行,相當於 1G 啊!

查找和替換:

  • /word:向游標之下尋找一個名稱為 word 的字元串。
  • n:代表『重複前一個搜尋的動作』。舉例來說, 如果剛剛我們執行/vbird 去向下搜尋 vbird 這個字元串,則按下 n 後,會向下繼續搜尋下一個名稱為vbird 的字元串。
  • :n1,n2s/word1/word2/g:n1 與 n2 為數字。在第 n1 與 n2 列之間尋找 word1 這個字元串,並將該字元串取代為 word2 !舉例來說,在 100 到 200 列之間搜尋 vbird 並取代為 VBIRD 則:『:100,200s/vbird/VBIRD/g』
  • :1,$s/word1/word2/g:從第一列到最後一列尋找 word1 字元串,並將該字元串取代為 word2 !
  • :1,$s/word1/word2/gc:從第一列到最後一列尋找 word1 字元串,並將該字元串取代為 word2 !且在取代前顯示提示字元給用戶確認 (confirm) 是否需要取代!

刪除、複製與粘貼

  • x, X:在一行字當中,x 為向後刪除一個字元 (相當於 [del] 按鍵), X 為向前刪除一個字元(相當於 [backspace] 亦即是退格鍵)
  • dd: 刪除游標所在的那一整行
  • ndd: n 為數字。刪除游標所在的向下 n 行,例如 20dd 則是刪除 20 行
  • yy: 複製游標所在的那一行
  • nyy: n 為數字。複製游標所在的向下 n 行,例如 20yy 則是複製 20 行
  • p, P:p 為將已複製的數據在游標下一列貼上,P 則為貼在游標上一列!

撤銷

  • u:復原前一個動作。(undo)
  • [Ctrl]+r: 重做上一個動作。(redo)
  • . :不要懷疑!這就是小數點!意思是重複前一個動作的意思。 如果你想要重複刪除、重複貼上等等動作,按下小數點『.』就好了!

一般模式切換到編輯模式的可用的按鈕說明

  • i, I:進入插入模式(Insert mode)。i 為『從目前游標所在處插入』, I 為『在目前所在列的第一個非空格符處開始插入』。

一般模式切換到命令行模式的可用按鈕說明

  • :w :將編輯的數據寫入硬碟文件中(常用)
  • :w! :若文件屬性為『只讀』時,強制寫入該文件。不過,到底能不能寫入, 還是跟你對該文件的文件許可權有關啊!
  • :q :離開 vi
  • :q! :若曾修改過文件,又不想儲存,使用 ! 為強制離開不儲存文件。
  • :wq :儲存後離開,若為 :wq! 則為強制儲存後離開
  • :set nu :顯示行號,設定之後,會在每一列的前綴顯示該列的行號
  • :set nonu :與 set nu 相反,為取消行號!

9.2.4 vim 的暫存檔、救援回復與開啟時的警告訊息

當我們在使用 vim 編輯時, vim 會在與被編輯的文件的目錄下,再建立一個名為.filename.swp 的文件。比如我們編輯 /tmp/vitest/man_db.conf 這個文件時, vim 會主動的建立/tmp/vitest/.man_db.conf.swp 的暫存檔,你對man_db.conf 做的動作就會被記錄到這個.man_db.conf.swp 當中!如果你的系統因為某些原因斷線了, 導致你編輯的文件還沒有儲存,這個時候.man_db.conf.swp 就能夠發揮救援的功能了!

9.3 vim 的額外功能

to be continued...


推薦閱讀:

TAG:鳥哥的Linux私房菜(書籍) | Vim | Linux |