前言
vi
是一個在 UNIX
和 UN*X
作業系統上非常普遍被使用的文字編輯器,而 vim
則是 vi
的強化版(Vi IMproved
),是目前普遍主要使用的版本。
儘管目前已有許多的文字編輯器可以使用,例如:VS Code、Sublime Text、Atom 等,然而對於系統管理員、DevOps 或是一個軟體工程師來說,在日常工作上仍有許多情境需要使用到 vim
(例如:操作 Git 文檔編輯、crontab 設定等)。若能熟悉基本的 vim 操作方式可以讓我們在終端機指令列操作時更加得心應手(最好的方式就是動手玩玩看,反正玩不用錢!),也讓工作更有效率。
對於喜歡且熟悉使用 vim
的使用者來說會覺得很好用,但一般初學者往往會覺得進入門檻有點高(若是看到密密麻麻的 Cheat Sheets 但卻不知道如何退出時更是如此)。因此本文將透過介紹 vim
使用模式情境和模式切換及常用的指令,讓讀者可以快速複習和熟悉這個平時常用的工具。
我已經使用了 vim 10 年了,因為我還不知道如何退出 - 程式笑話
接著就讓我們打開終端機,然後輸入以下指令進入 vim
的世界吧!
# 透過 vim 新增/編輯 demo.txt 這個檔案
$ vim demo.txt
模式介紹
在 vim
中透過模式的切換可以讓我們進行不同的工作情境。在 vim
中主要常見有四種模式:命令模式(Command mode),插入模式(Insert mode)和底線命令模式(Last line mode)、視覺模式(Visual mode)。當使用者處在不同模式的時候,鍵盤輸入會產生不同的作用。以下我們分別介紹不同模式的使用情境。
命令模式
命令模式為一開始進入 vim 的預設模式,在任何模式下鍵盤輸入 Esc
會回到這個預設模式中。若要切換到其他模式則使用鍵盤輸入:
i
:切換到插入模式,可以輸入字串文字內容。
:
:切換到底線命令模式,可以在最底一行輸入操作指令。
v
:切換到視覺模式,可以使用滑鼠游標選擇文字,方便閱讀和強調。
x
:刪除游標所在字元
插入模式
鍵盤輸入 i
就可以進入插入模式,讓我們可以輸入文字編輯內容(也是主要的操作模式),鍵盤輸入 Esc
會回到命令模式。
常用其他指令:
Enter
:換行
Back Space
:刪除游標前一個字元
Del
:刪除游標後一個字元
方向鍵
:在文檔中移動游標
Page Up
/Page Down
:上/下翻頁
底線命令模式
鍵盤輸入 :
就可以進入底線命令模式,讓我們可以輸入指令操作內容。若要離開或是儲存離開 vim
就要透過底線命令模式輸入指令。若鍵盤輸入 Esc
會回到命令模式。
常用其他指令(謎之音:初學者記得要先學如何離開退出):
:q
:不儲存直接離開
:q!
:不儲存,強制直接離開(當有修改不想儲存時)
:e!
:放棄所有修改,從上次儲存文件紀錄開始編輯
:w
:儲存文檔但不離開
:!w
:強制儲存文檔但不離開
:w {name}
:儲存文檔並命名為 name
,但不離開
:wq
:儲存並離開
:!wq
:強制儲存並離開
視覺模式
在命令模式輸入 v
可以進入視覺模式使用滑鼠游標選擇文字,方便閱讀和強調,鍵盤輸入 Esc
會回到命令模式。
更多常用指令和使用情境
[命令模式]游標移動
:0
:移動到文件檔案的起點
:{number}
:移動到第 {number} 行
:$
:移動到文件檔案最後一行
[命令模式]刪除字元
x
:刪除游標所在的字元
dd
:刪除本行
{n}dd {n}
:刪除游標所在的那一行往下數 {n} 行
[命令模式]複製貼上
yy
:複製游標所在的那一行並放入暫存區
{n}yy
:複製游標所在的那一行往下數 {n} 行並放入暫存區
p
:複製暫存區的內容到游標所在下方
P
:複製暫存區的內容到游標所在上方
[命令模式]復原
u
:恢復之前的修改
[底線命令模式]搜尋取代
/{text}
:往前尋找 {text} 字串於檔案位置
[範圍] s/{from}/{to}/g
:在範圍(1, $ 代表全部檔案)中將 {from} 取代為 {to},/g
。 為全部取代。(例如: 1, 4 s/name/username/g
為將 1-4 行字串中所有 name
改為 username
)
總結
以上簡單介紹 vim 的入門基礎操作模式:命令模式(Command mode),插入模式(Insert mode)和底線命令模式(Last line mode)、視覺模式(Visual mode)和常用指令,相信讀者已經可以入門 vim 文字編輯器的使用。
若我們能熟悉基本的 vim 操作方式可以讓我們在終端機指令列操作時更加得心應手,要熟悉 vim 最好的方式就是動手玩玩看,反正玩壞也不用錢,檔案再重新建立就好!對於初學者來說先熟悉模式的概念和最簡單的指令夠用就好,遇到不會的再自行查找是相對容易入門的方式。