--- title: vi 常用指令簡易介紹(Ubuntu/Linux) tags: Linux/vi --- # vi 常用指令簡易介紹(Ubuntu/Linux) By 蓉爸 RungBa Created: 2019-10-07 Revised: 2023-01-13 ---  (圖片來源: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/)**  --- ## 一、操作模式 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/
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.