[Linux] vi 與 vim 指令一覽表整理

Intro

vi 在寫 code 改 code 實在有它特有的魅力,我這邊轉載整理了 vi / vim的指令,這樣就不用再去設快捷鍵 (像Mac Terminal的"/033[5~")

vi 是 unix 家族下最功能強大的文字編輯器,讓用戶只要使用一個鍵盤就可以完成所有的編輯。而 vim 則是 vi 的加強版,甚至在 Windows 上也找得到 vim 的芳蹤。但 vi/vim 眾多的指令卻經常令初學者卻步,它的指令還有分大小寫,以下整理出這些指令:


編輯模式

指令 說明
i 在游標位置進入編輯模式
I 在游標行的第一個非空白字元進入編輯模式
a 在游標位置後進入編輯模式
A 在游標行的最後一個字元進入編輯模式
o 向下新增一行,並進入編輯模式
O 向上新增一行,並進入編輯模式
cc 刪除游標行,並進入編輯模式
[ESC] 取消指令或退出編輯模式

游標移動

指令 說明
gg 移到第一行
G 移到最後一行
行數 → G 移動到第 n 行
0 移動到該行最前面
$ 移動到該行最後面
字數 → [Space] 向右移動 n 個字元
行數 → [Enter] 向下移動 n 行

標記與複製

指令 說明
v 開始字串標記
V 開始行標記
v → [Ctrl]-V 開始區塊標記
d 刪除標記的內容
y 複製標記的內容
yy 複製游標行
yG 複製游標行到最後一行
y1G 複製游標行到第一行
y$ 複製游標處到最後一個字元
y0 複製游標處到第一個字元
p 在下一行貼上複製或刪除的內容
P 在上一行貼上複製或刪除的內容
[Ctrl]-R → 0 在下一行貼上複製或刪除的內容,適用於編輯模式及指令行

搜尋與取代

指令 說明
/搜尋字串 向下搜尋字串
/\c搜尋字串 向下搜尋字串,不分大小寫
將游標移到字串上,直接按 "*" 也可以做向下搜尋
?搜尋字串 向上搜尋字串
?\c搜尋字串 向上搜尋字串,不分大小寫
:set ic 搜尋時不分大小寫
:set noic 搜尋時要分大小寫
n 繼續下一個搜尋結果
N 繼續上一個搜尋結果
:起始行,終止行s/搜尋字串/取代字串/gic 從第 n 行到第 n 行取代字串 (後面的 g: 整行全部, i: 不分大小寫,c: 詢問)
:%s/搜尋字串/取代字串/g 全部取代字串 (後面的 g: 整行全部, i: 不分大小寫,
c: 詢問)

刪除

指令 說明
dd 刪除游標行
dG 刪除游標行到最後一行
d1G 刪除游標行到第一行
d$ 刪除游標處到最後一個字元
d0 刪除游標處到第一個字元

檔案功能

指令 說明
:w 存檔 (加 ! 表示強制存檔)
:w 檔案名稱 另存新檔
:wq 存檔並退出 vi
:w !sudo tee % Sudo 強制存擋
:e 檔案名稱 編輯其它檔案
:e! 還原至檔案編修前的狀態
:r 檔案名稱 讀入檔案內容,並加到游標行的後面
:n 切換到下一個開啟的檔案
:N 切換到上一個開啟的檔案
:set nu 顯示行號
:set nonu 取消行號顯示
:files 列出所有開啟的檔案

視窗分割

指令 說明
:new 新增水平視窗
:new 檔案名稱 新增水平視窗,並在新增的視窗載入檔案
:vnew 新增垂直視窗
:vnew 檔案名稱 新增垂直視窗,並在新增的視窗載入檔案
[Ctrl]-W → [方向鍵] 切換視窗
:only 僅保留目前的視窗

編碼 (Encoding)

指令 說明
:set fileencoding 顯示目前讀取檔案使用的 encoding (fileencoding)
:set fileencoding={encoding} 設定目前檔案使用的 encoding
:e ++enc={encoding} 使用指定的 encoding 重新讀取檔案 (++enc)
:w ++enc={encoding} 使用指定的 encoding 寫入當前檔案
ga 查看目前游標所在字元的 ASCII 碼、16進位、8進位 (ga)
g8 查看目前游標所在字元的 UTF-8 編碼 (ga)

十六進制 (Hex)

指令 說明
:%! xxd 使用 xxd 將檔案轉換成 hex 編輯器模式
:%! xxd -r 使用 xxd 將檔案從 hex 編輯器模式復原回去

其它

指令 說明
J 將游標行與下一行合併
u 還原指令
[Ctrl]-R 重做指令
. 重覆上一個指令
! 命令 執行 linux 指令,並顯示執行結果
:q 退出 vi (加 ! 表示強制退出)

Leave a Reply

Your email address will not be published. Required fields are marked *