跳至主要内容

Vim - 最強大的文字編輯器

Vim 是一款非常強大的文字編輯器,你完全可以在手不離開鍵盤的情況下,就完成撰寫你的程式碼,把鍵盤利用的淋灕盡致,大大提升你的產出效率。

因為有一些很常用的功能或組合我還是會忘記,所以這篇文章比較像是寫給我自己的備忘錄,也會一直更新!或許有一些操作是你沒有看過的,希望也能給你一些啟發,如果有什麼更好的解決方案,也請務必寫信到 hi@fattie.io 跟我分享。

最後更新:2025-09-21

important

我的作業系統是 macOS,Windows 的操作有可能會有些許的差異。另外,雖然我寫了一篇文章介紹 Vim,但這並不代表我是 Vim 的專家!文章中可能會有不完整的資訊,如果有缺漏或錯誤資訊,也請不吝指教。

如何上手 Vim

你可以在終端機中輸入 vimtutor 來進入官方的 Vim 使用教學,可以在 30 分鐘內熟悉 Vim 的基礎操作。如果你沒有使用過 Vim 的話,我強烈建議你投資這半小時的時間!

因為 Vim 的操作跟我們熟悉的圖形界面有很大的區別,所以除了練習 vimtutor 之外,我覺得更重要的是實際用 Vim 來寫一些小的專案,可以讓你最快速的熟悉它、內化成自己的技能。

常用快捷鍵

為了讓你快速上手,我整理了一些最常用的快捷鍵,也加上了一些方便你記憶的詞(但不一定是官方解釋)。

操作類別按鍵/指令功能說明
移動游標h向左移動一個字元
l向右移動一個字元
j (jump 向下跳)向下移動一行
k (kick 向上踢)向上移動一行
0移動到行首
$移動到行尾
w (word)跳到下一個單字的開頭
e跳到單字的結尾
編輯模式i (Insert)在游標前進入插入模式
a (Append)在游標後進入插入模式
o在下一行新增並進入插入模式
O在上一行新增並進入插入模式
刪除操作x刪除游標所在字元
dd刪除整行
儲存離開:w (write)儲存檔案
:q (quit)離開 Vim
:wq儲存並離開
:q!強制離開(不儲存)
模式切換Esc回到一般模式(Normal Mode)

怎麼退出 Vim

有個笑話是「最安全的編輯器是 Vim,因為沒人能退出,檔案不會被刪掉」。

在大多數終端機的操作中,Ctrl C 就能退出,但在 Vim 中他只會中斷操作,並不會離開 Vim,stackoverflow 上一篇 2013 年的提問《How do I exit Vim?》甚至累積了超過 3 百萬的瀏覽。所以在你被 Vim 逼瘋以前,讓我先告訴你,按下 Esc 後輸入 :wq 可以存檔後離開、:q! 可以不存檔強制離開。

你可能會需要的

預設設定

你可以透過在終端機輸入 vim ~/.vimrc 來更改每次開啟 vim 的預設設定,以下是幾個我推薦的必備設定。

set number        " 顯示行號
set expandtab " 把 Tab 鍵轉換成空白
set tabstop=4 " 一個 Tab 視為 4 個空白
set shiftwidth=4 " 自動縮排時縮排 4 個空白
set autoindent " 自動沿用上一行的縮排
set hlsearch " 強調顯示搜尋結果
set incsearch " 搜尋時即時顯示符合項目
set ignorecase " 大小寫不敏感搜尋
set smartcase " 如果有一個大寫字母,則使用大小寫敏感搜尋
syntax on " 啟用 Syntax Highlighting

複製到系統剪貼簿

進入 VISUAL MODE 選取欲複製的內容後,按下 "+y 即可將選取的內容複製到系統剪貼簿。

" 是用來指定寄存器(Register)的前綴,+ 代表系統剪貼簿,所以 "+y 的意思就是把選取的內容複製(yank)到 + 寄存器,也就是複製到系統剪貼簿中。)

註:如果你的 Vim 沒有支援 +clipboard,"+y 可能無法使用。可以輸入 vim --version | grep clipboard 檢查。

搜尋與替代

NORMAL MODE 中輸入 / 即可搜尋,按 Entern 可以跳到下一個結果,N 跳到上一個。

替換的話我覺得比較繞口,我打算用例子來解釋。

# 假設有一行文字是這樣的:

foo foo foo

#輸入 :s/foo/bar 只會把第一個 foo 替換掉,結果是:

bar foo foo

# 輸入 :s/foo/bar/g 則會把整行的 foo 都替換掉:

bar bar bar

# 輸入 :%s/foo/bar/g 則會把整個檔案的 foo 都替換掉。

s = substitute (替換),g = global (對這一行所有出現的項目都替換),% = 整個檔案。

更詳細的搜尋與替代的操作,可以參考 Harttle這篇文章

註解多行

  1. 讓游標停在你想要註解的第一行,按下 Ctrl V,讓編輯器進入 VISUAL BLOCK 模式。
  2. 移動游標到你想要註解的最後一行。
  3. 按下 Shift I,讓編輯器進入 INSERT 模式,再輸入你想插入的註解符號(以 Python 來說是 #)。這個動作會在第一行加入 #
  4. 按一下 Esc 並等一下(如果不想等的話,按兩下 Esc),Vim 就會自動在你選擇的每一行最前面都加入 #

取消註解也是相同的邏輯,進入 VISUAL BLOCK 模式選取所有的註解後,按 x 刪除。

註解的示範:

取消註解的示範:

解法和 GIF 來自 Christian C. Salvadóstackoverflow 上的回答。