全域
- :h[elp] 關鍵字 - 顯示關鍵字的說明
 - :sav[eas] 檔案名稱 - 另存新檔為檔案名稱
 - :clo[se] - 關閉目前的視窗
 - :ter[minal] - 開啟一個命令列視窗
 - K - 開啟游標所在單字的 man 頁面
 
移動游標
- h - 向左移動游標
 - j - 向下移動游標
 - k - 向上移動游標
 - l - 向右移動游標
 - gj - 向下移動游標,適用於一行文字超長、自動分成幾行顯示的情況
 - gk - 向上移動游標,適用於一行文字超長、自動分成幾行顯示的情況
 - H - 跳至視窗頂端
 - M - 跳至視窗中間
 - L - 跳至視窗底端
 - w - 向右跳至字首
 - W - 向右跳至字首 (字中可含標點)
 - e - 向右跳至字尾
 - E - 向右跳至字尾 (字中可含標點)
 - b - 向左跳至字尾
 - B - 向左跳至字尾 (字中可含標點)
 - ge - 向左跳至前一字的字尾
 - gE - 向左跳至前一字的字尾(字中可含標點)
 - 
            % - 跳至相對應的字元 (預設支援 ()、{}、[] - 在 Vim 中使用 
:h matchpairs顯示說明) - 0 - 跳至行首
 - ^ - 跳至行內第一個非空白字元
 - $ - 跳至行尾
 - g_ - 跳至行內最後一個非空白字元
 - gg - 跳至檔案第一行
 - G - 跳至檔案最後一行
 - 5gg or 5G - 跳至第 5 行
 - gd - 跳至局部變數的定義 (在 C/C++) 效果最佳
 - gD - 跳至全域變數的定義 (在 C/C++) 效果最佳
 - fx - 跳至字元 x 下次出現的位置
 - tx - 跳至字元 x 下次出現位置的上一個字元
 - Fx - 跳至字元 x 上次出現的位置
 - Tx - 跳至字元 x 上次出現的位置之後
 - ; - 重複上個 f、t、F 或 T 移動
 - , - 反向重複上個 f、t、F 或 T 移動
 - } - 跳至下一段 (若編輯程式碼則為函式/區塊)
 - { - 跳至上一段 (若編輯程式碼則為函式/區塊)
 - zz - 將游標所在行移到視窗中間
 - zt - 将游标所在行移到屏幕顶部
 - zb - 将游标所在行移到屏幕底部
 - Ctrl + e - 視窗向下捲動一行 (不移動游標)
 - Ctrl + y - 視窗向上捲動一行 (不移動游標)
 - Ctrl + b - 向上捲動一個視窗
 - Ctrl + f - 向下捲動一個視窗
 - Ctrl + d - 向下捲動半個視窗
 - Ctrl + u - 向上捲動半個視窗
 
插入模式 - 插入/附加文字
- i - 在游標前開始插入字元
 - I - 在行首開始插入字元
 - a - 在游標後開始插入字元
 - A - 在行尾開始插入字元
 - o - 在該行之下另起一行,開始插入字元
 - O - 在該行之上另起一行,開始插入字元
 - ea - 在該單字字尾開始插入字元
 - Ctrl + h - 在插入模式中刪除游標前的字元
 - Ctrl + w - 在插入模式中刪除游標前的字
 - Ctrl + j - 在插入模式中換行
 - Ctrl + t - 在插入模式中向右縮排
 - Ctrl + d - 在插入模式中向左縮排
 - Ctrl + n - 在插入模式中自動補全下個候補字
 - Ctrl + p - 在插入模式中自動補全上個候補字
 - Ctrl + rx - 在插入模式中插入x暫存器的內容
 - Ctrl + ox - 在插入模式暫時切換到普通模式執行一個指令,之後自動回到插入模式
 - Esc or Ctrl + c - 退出插入模式
 
編輯
- r - 取代游標後一個字元
 - R - 覆蓋當前光標位置的現有字符
 - J - 將下一行合併至該行 (兩行之間有空格)
 - gJ - 將下一行合併至該行 (兩行之間沒有空格)
 - gwip - 重新調整段落
 - g~ - 搭配移動來切換大小寫
 - gu - 搭配移動來轉換成小寫
 - gU - 搭配移動來轉換成大寫
 - cc - 剪下 (刪除) 整行並開始插入
 - c$ or C - 剪下 (刪除) 游標位置到行尾的區塊並開始插入
 - ciw - 剪下 (刪除) 整個字並開始插入
 - cw or ce - 從游標位置開始變更 (取代) 單字
 - s - 刪除游標後字元並進入插入模式
 - S - 刪除整行並進入插入模式 (同 cc)
 - xp - 游標後二個字元位置交換 (刪除並貼上)
 - u - 復原
 - U - 復原上次變更的行
 - Ctrl + r - 重做
 - . - 重複上個命令
 
選取文字(標示模式)
- v - 進入標示模式 (字元選取),並執行命令 (如 y - 複製)
 - V - 進入標示模式 (行選取)
 - o - 跳至選取區塊的開頭/結尾
 - Ctrl + v - 進入標示模式 (區塊選取)
 - O - 跳至選取區塊的角落
 - aw - 選取該單字
 - ab - 選取 () 及所包圍的區塊
 - aB - 選取 {} 及所包圍的區塊
 - at - 選取 <> tags 及所包圍的區塊
 - ib - 選取 () 內的區塊
 - iB - 選取 {} 內的區塊
 - it - 選取 <> tags 內的區塊
 - Esc or Ctrl + c - 退出標示模式
 
標示模式命令
- > - 向右縮排
 - < - 向左縮排
 - y - 複製
 - d - 剪下
 - ~ - 切換大小寫
 - u - 轉換成小寫
 - U - 轉換成大寫
 
暫存區
- :reg[isters] - 顯示暫存區內容
 - "xy - 複製到暫存區 x
 - "xp - 貼上暫存區 x 的內容
 - "+y - 複製到剪貼簿暫存區
 - "+p - 貼上剪貼簿暫存區的內容
 
             0 - 最近複製暫存區
             " - 未命名暫存區, 保存上次的刪除或複製
             % - 現在的檔名
             # - 備用檔名
             * - 剪貼簿內容(X11 primary)
             + - 剪貼簿內容(X11 clipboard)
             / - 最後的搜尋表達式
             : - 最後的指令
             . - 最後的插入文字
             - - 最後的(未滿一行的)刪除
             = - expression register
             _ - 黑洞暫存區
          
標記
- :marks - 顯示標記清單
 - ma - 將目前的位置設為標記 a
 - `a - 跳至標記 a
 - y`a - 複製游標目前位置到標記 a 位置的字元
 - `0 - 回到上次離開Vim時的位置
 - `" - 回到上次編輯該檔案的位置
 - `. - 回到上次修改該檔案的位置
 - `` - 回到上次跳離的位置
 - :ju[mps] - 列出跳轉紀錄
 - Ctrl + i - 在跳轉歷史中前往一個較新的位置
 - Ctrl + o - 在跳轉歷史中前往一個較舊的位置
 - :changes - 顯示對文件所做更改的歷史記錄
 - g, - 在變更列表中前往一個較新的位置
 - g; - 在變更列表中前往一個較舊的位置
 - Ctrl + ] - 跳轉到游標當前位置下的標籤
 
巨集
- qa - 錄製巨集 a
 - q - 停止錄製巨集
 - @a - 執行巨集 a
 - @@ - 執行上一次執行的巨集
 
剪下、複製、貼上
- yy - 複製該行
 - 2yy - 複製 2 行
 - yw - 複製游標位置到下個單字前的字元
 - yiw - 複製游標所在單字
 - yaw - 複製游標所在單字和後面或前面的空格
 - y$ or Y - 複製游標位置到行尾的區塊
 - p - 在游標後貼上
 - P - 在游標前貼上
 - gp - 在光標後面貼上文字,並且操作完成後游標停留在貼上文字的最後一個字符後面
 - gP - 在光標前面貼上文字,並且操作完成後游標停留在貼上文字的最後一個字符後面
 - dd - 剪下 (刪除) 該行
 - 2dd - 剪下 (刪除) 2 行
 - dw - 剪下 (刪除) 游標位置到下個單字前的字元
 - diw - 剪下 (刪除) 游標所在單字
 - daw - 剪下 (刪除) 游標所在單字和後面或前面的空格
 - :3,5d - 刪除從第 3 行到第 5 行的內容 (3,5D)
 
e.g.
            :.,$d - 從當前行到檔案結束 
            :.,1d - 從當前行到檔案開始 
            :10,1d - 從第10行到檔案開始 
          
- :g/{pattern}/d - 刪除包含特定模式的所有行
 - :g!/{pattern}/d - 刪除不包含特定模式的所有行
 - d$ or D - 剪下 (刪除) 游標位置到行尾的區塊 (同 D)
 - x - 剪下 (刪除) 字元
 
文字縮排
- >> - 向右縮排一個shiftwidth寬度
 - << - 向左縮排一個shiftwidth寬度
 - >% - 向右縮排 () 或 {} 內的區塊 (游標需置於括號上)
 - <% - 向左縮排 () 或 {} 內的區塊 (游標需置於括號上)
 - >ib - 向右縮排 () 內的區塊
 - >at - 向右縮排 <> tags 內的區塊
 - 3== - 自動縮排下3行
 - =% - 自動縮排 () 或 {} 內的區塊 (游標需置於括號上)
 - =iB - 自動縮排 {} 內的區塊
 - gg=G - 自動縮排整個緩衝區
 - ]p - 貼上並自動縮排至該行
 
退出
- :w - 儲存
 - :w !sudo tee % - 以 sudo 儲存目前的檔案
 - :wq or :x or ZZ - 儲存並退出
 - :q - 退出 (修改未儲存時警告)
 - :q! or ZQ - 強制退出 (不儲存)
 - :wqa - 儲存所有分頁並全部退出
 
尋找、取代
- /pattern - 尋找 pattern
 - ?pattern - 向上尋找 pattern
 - \vpattern - pattern 中的非英數字元皆視為正規表示式的特殊字元 (不需跳脫字元)
 - n - 尋找下一個
 - N - 尋找上一個
 - :%s/old/new/g - 全部取代
 - :%s/old/new/gc - 逐項取代
 - :noh[lsearch] - 移除搜尋結果的標示
 
多檔案搜尋
- :vim[grep] /pattern/ {`{file}`} - 在多個檔案中搜尋 pattern
 
- :cn[ext] - 跳至下一個
 - :cp[revious] - 跳至上一個
 - :cope[n] - 開啟搜尋結果列表視窗
 - :ccl[ose] - 關閉快速修復視窗
 
分頁
- :tabnew or :tabnew {page.words.file} - 在新分頁開啟檔案名稱
 - Ctrl + wT - 以新分頁開啟視窗
 - gt or :tabn[ext] - 切換到下個分頁
 - gT or :tabp[revious] - 切換到上個分頁
 - #gt - 切換到第 # 個分頁
 - :tabm[ove] # - 將分頁移到第 # 位 (從 0 算起)
 - :tabc[lose] - 關閉該分頁及其中所有視窗
 - :tabo[nly] - 關閉所有其他分頁
 - :tabdo command - 對所有分頁執行命令 (例如 :tabdo q 會關閉所有分頁)
 
多檔案編輯
- :e[dit] 檔案名稱 - 在新緩衝區開啟檔案名稱
 - :bn[ext] - 切換到下個緩衝區
 - :bp[revious] - 切換到上個緩衝區
 - :bd[elete] - 刪除緩衝區 (關閉檔案)
 - :b[uffer]# - 通過編號切換到特定緩衝區
 - :b[uffer] file - 通過檔案名切換到特定緩衝區
 - :ls or :buffers - 列出所有開啟的緩衝區
 - :sp[lit] 檔案名稱 - 在新緩衝區開啟檔案名稱並水平分割視窗
 - :vs[plit] 檔案名稱 - 在新緩衝區開啟檔案名稱並垂直分割視窗
 - :vert[ical] ba[ll] - 以垂直視窗方式編輯所有緩衝區
 - :tab ba[ll] - 以標籤頁方式編輯所有緩衝區。
 - Ctrl + ws - 水平分割視窗
 - Ctrl + wv - 垂直分割視窗
 - Ctrl + ww - 切換視窗
 - Ctrl + wq - 關閉視窗
 - Ctrl + wx - 與下一個視窗交換當前視窗
 - Ctrl + w= - 使所有視窗等高等寬
 - Ctrl + wh - 游標跳至左視窗 (垂直分割)
 - Ctrl + wl - 游標跳至右視窗 (垂直分割)
 - Ctrl + wj - 游標跳至下視窗 (水平分割)
 - Ctrl + wk - 游標跳至上視窗 (水平分割)
 - Ctrl + wH - 使游標所在視窗全高並移至最左 (最左垂直視窗)
 - Ctrl + wL - 使游標所在視窗全高並移至最右 (最右垂直視窗)
 - Ctrl + wJ - 使游標所在視窗全寬並移至最下 (最下水平視窗)
 - Ctrl + wK - 使游標所在視窗全寬並移至最上 (最上水平視窗)
 
Diff
- zf - 手動定義一個動作範圍的摺疊
 - zd - 刪除游標下的摺疊
 - za - 切換游標下的摺疊
 - zo - 打開游標下的摺疊
 - zc - 關閉游標下的摺疊
 - zr - 減少(打開)所有摺疊一級
 - zm - 增加(關閉)所有摺疊一級
 - zi - 切換摺疊功能
 - ]c - 跳至下一個更改的開始
 - [c - 跳至上一個更改的開始
 - do or :diffg[et] - 獲取(從另一緩衝區)差異
 - dp or :diffpu[t] - 放置(到另一緩衝區)差異
 - :diffthis - 將當前視窗設為差異比較的一部分
 - :dif[fupdate] - 更新差異
 - :diffo[ff] - 為當前視窗關閉差異模式