--- title: vi 常用指令簡易介紹(Ubuntu/Linux) tags: Linux/vi --- # vi 常用指令簡易介紹(Ubuntu/Linux) By 蓉爸 RungBa Created: 2019-10-07 Revised: 2023-01-13 --- ![](https://static.coderbridge.com/img/techbridge/images/kdchang/cs101/linux.jpg) (圖片來源:https://blog.techbridge.cc/2017/12/23/linux-commnd-line-tutorial/) **Ref:** - **[給程式設計師的Vim入門圖解說明 (2009-12-08)](https://blog.vgod.tw/2009/12/08/vim-cheat-sheet-for-programmers/)** ![](https://blog.vgod.tw/wp-content/uploads/2009/12/vim-cheat-sheet-full.png) --- ## 一、操作模式 1. 指令模式 (Command Mode) 2. 輸入模式 (Insert Mode) ### 1 輸入模式 (Insert Mode) |* | 指令 | 說明 | |--| -------- | -------- | |* | a(append) | 由游標之後 加入資料 | |* | A | 由該行之末 加入資料 | |* | i (insert)| 由游標之前 加入資料 | |* | I | 由游標之首 加入資料 | |* | o(open) | 新增一行於該行之下 供輸入資料之用 | |* | O | 新增一行於該行之上 供輸入資料之用 | **離開輸入模式:《ESC》 結束輸入模式。** ### 2. 指令模式 (Command Mode) #### 2-1. 游標移動 |* | 指令 | 說明 | |--| -------- | -------- | |* | h | 向左移一個字元 | |* | j | 向上移一個字元 | |* | k | 向下移一個字元 | |* | l | 向右移一個字元 | | | 0 | 移至該行之首 | | | $ | 移至該行之末 | | | ^ | 移至該行的第一個字元處 | | | H | 移至視窗的第一列 | | | M | 移移至視窗的中間那列 | | | L | 移至視窗的最後一列 | | | G | 移至該檔案的最後一列 | | | + | 移至下一列的第一個字元處 | | | - | 移至上一列的第一個字元處 | | | ( | 移至該句 之首 (註一) | | | ) | 移至該句 之末 | | | { | 移至該段落 之首 (註二) | | | } | 移至該段落 之末 | | | nG | 移至該檔案的第 n 列 | | | n+ | 移至游標所在位置之後的第 n 列 | | | n- | 移至游標所在位置之前的第 n 列 | | | <Ctrl+g> | 會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標 所在行號佔總行號之百分比 | 註一:句子(sentence)在vi中是指以『!』、『.』或『?』結束的一串字。 註二:段落(paragraph)在vi中是指以空白行隔開的文字。 <br> #### 2-2. 刪除、複製及修改指令介紹 d(delete)、c(change) 和 y(yank) 這一類的指令在 vi 中的指令格式為: **Operator(運算子) + Scope(範圍) = command** **整行動作:** |*| 指令 | 說明 | |-| -------- | -------- | |*| dd | 刪除整行 | | | D | 以行為單位,刪除游標後之所有字元。 | |*| cc | 修改整行的內容 | |*| yy | yank整行,使游標所在該行複製到記憶體緩衝區 | |*| <n>yy | yank整行,使游標所在該行複製到記憶體緩衝區 | |*| x | 刪除游標所在該字元 | | | X | 刪除游標所在之前一字元 | |*| r | 用接於此指令之後的字元取代(replace)游標所在字元。如: ra 將游標所在字元以 a 取代之。 | |*| R | 進入取代狀態,直到《ESC》為止 | | | s | 刪除游標所在之字元,並進入輸入模式直到《ESC》 | | | S | 刪除游標所在之該行資料,並進入輸入模式直到《ESC》 | **運算子:** (略) **範圍:** (略) #### 2-3. 刪除、複製及修改指令介紹 #### 2-4. 視窗的捲動 | 指令 | 說明 | | -------- | -------- | | <Ctrl+f> | 視窗往下捲一頁 | | <Ctrl+b> | 視窗往上捲一頁 | | <Ctrl+d> | 視窗往下捲半頁 | | <Ctrl+u> | 視窗往上捲半頁 | | <Ctrl+e> | 視窗往下捲一行 | | <Ctrl+y> | 視窗往上捲一行 | --- ## 二、常用指令範例 ### 1. 搬移與複製 > 例 1:搬移一行 > > * 在該行執行 dd > > * 游標移至目的地 > > * 按 p > 例 2:複製一行 > > * 在該行執行 yy > > * 游標移至目的地 > > * 按 p ### 2. 取消前一動作(Undo) > 按 u:恢復最後一個指令之前的結果。 > 按 U:恢復游標該行之所有改變。 ### 3. 指令重複 > 例 1:刪除10行 > > 按 10dd > 例 2:複製10行 > > 按 10yy > > 游標移至目的地,再按 p > 例 2:指標往下移10行 > > 按 10j --- Ref: 1. vi指令說明(完整版) (2011-05-12) http://www2.nsysu.edu.tw/csmlab/unix/vi_command.htm 2. 用聰明的方式學習Vim,不再死記硬背,複雜命令一學就會 (2020-08-31) https://bangqu.com/Gup657.html * https://thevaluable.dev/vim-beginner/ * https://thevaluable.dev/vim-intermediate/ * https://thevaluable.dev/vim-advanced/