Vim 是一款功能強大但學習曲線陡峭的文本編輯器,核心在于其模式化操作。掌握常用指令能極大提升效率。以下是指令分類整理:
一、核心模式切換 (必須掌握!)
i
:在光標前進入?插入模式 (Insert Mode)
a
:在光標后進入?插入模式 (Insert Mode)
o
:在下方新建一行并進入插入模式O
:在上方新建一行并進入插入模式ESC
?或?Ctrl+[
:退出當前模式,回到?普通模式 (Normal Mode)
?- 最常用!v
:進入?可視模式 (Visual Mode)
?(字符選擇)V
:進入?可視行模式 (Visual Line Mode)
?(行選擇)Ctrl+v
:進入?可視塊模式 (Visual Block Mode)
?(列塊選擇):
:進入?命令行模式 (Command-Line Mode)
?? 牢記:大部分時間你在?
普通模式
!?編輯完記得按?ESC
?返回普通模式。
二、移動光標 (普通模式下)
基本移動:
h
?←,?j
?↓,?k
?↑,?l
?→ (或方向鍵)w
?/?W
:跳到下一個單詞開頭 (W忽略標點)b
?/?B
:跳到上一個單詞開頭 (B忽略標點)e
?/?E
:跳到當前/下一個單詞結尾 (E忽略標點)0
?(零):跳到行首^
:跳到行首第一個非空白字符$
:跳到行尾gg
:跳到文件第一行G
:跳到文件最后一行:[行號]
?+?回車
:跳到指定行 (如?:10
?跳到第10行)Ctrl+f
:向下翻頁Ctrl+b
:向上翻頁Ctrl+d
:向下翻半頁Ctrl+u
:向上翻半頁H
:跳到當前屏幕頂部M
:跳到當前屏幕中間L
:跳到當前屏幕底部
查找移動:
/
?+?關鍵詞
?+?回車
:向下搜索關鍵詞 (如?/hello
)?
?+?關鍵詞
?+?回車
:向上搜索關鍵詞n
:查找下一個匹配項N
:查找上一個匹配項f
?+?字符
:將光標移動到當前行下一個指定的字符上 (如?fa
?找下一個?a
)F
?+?字符
:將光標移動到當前行上一個指定的字符上t
?+?字符
:將光標移動到當前行下一個指定的字符前
T
?+?字符
:將光標移動到當前行上一個指定的字符后
%
:在配對的括號?()
,?[]
,?{}
?之間跳轉
三、編輯文本 (普通模式下)
刪除:
x
:刪除光標下的字符X
:刪除光標前的字符dw
:從光標位置刪除到下一個單詞開頭d$
?或?D
:從光標位置刪除到行尾d0
:從光標位置刪除到行首dd
:刪除整行[數字]dd
:刪除從光標開始的指定行數?(如?3dd
?刪除3行)daw
:刪除光標所在的單詞?(包括周圍空格)diw
:刪除光標所在的單詞?(不包括周圍空格)
復制 (yank):
yy
:復制整行[數字]yy
:復制從光標開始的指定行數?(如?3yy
?復制3行)yw
:復制從光標到下一個單詞開頭的文本y$
:復制從光標到行尾的文本y0
:復制從光標到行首的文本
粘貼 (put):
p
:在光標后粘貼P
:在光標前粘貼
撤銷/重做:
u
:撤銷上一次操作Ctrl+r
:重做?(撤銷掉撤銷)
修改/替換:
r
?+?字符
:替換光標下的字符 (如?ra
?替換成?a
)R
:進入替換模式?(連續替換多個字符,按?ESC
?退出)cw
:刪除從光標到單詞結尾并進入插入模式?(Change Word)c$
?/?C
:刪除從光標到行尾并進入插入模式cc
?/?S
:刪除整行并進入插入模式s
:刪除光標下的字符并進入插入模式~
:切換光標下字符的大小寫
縮進:
>>
:當前行增加縮進<<
:當前行減少縮進=
:自動縮進當前行 (或選中的行/塊)
四、可視模式操作 (先按?v
,?V
,?Ctrl+v
?選中)
選中文本后,可以使用普通模式下的編輯命令:
d
?/?x
:刪除選中文本y
:復制選中文本c
:刪除選中文本并進入插入模式>
:增加縮進<
:減少縮進=
:自動縮進u
:將選中文本轉為小寫U
:將選中文本轉為大寫
五、命令行模式 (按?:
?進入)
文件操作:
:w
:保存文件:w [文件名]
:另存為到指定文件名:q
:退出?Vim (如果文件未修改):q!
:強制退出?Vim (不保存修改):wq
?或?:x
?或?ZZ
:保存并退出:e [文件名]
:打開另一個文件進行編輯
搜索與替換:
:%s/old/new/g
:全局替換所有?old
?為?new
:%s/old/new/gc
:全局替換,每次替換前詢問確認:s/old/new/g
:替換當前行的所有?old
?為?new
:起始行,結束行s/old/new/g
:替換指定行范圍的所有?old
?為?new
?(如?:10,20s/foo/bar/g
)
其他常用:
:set nu
:顯示行號:set nonu
:隱藏行號:set hlsearch
:高亮顯示搜索結果:set nohlsearch
?或?:nohl
:關閉搜索結果高亮 (臨時):help [命令]
:查看幫助?(如?:help w
):! [shell命令]
:執行外部 shell 命令?(如?:! ls
):r [文件名]
:讀取文件內容并插入到光標后:r ! [shell命令]
:讀取?shell 命令的輸出并插入到光標后 (如?:r ! date
)
六、組合與重復
操作符 + 動作 = 強大功能
d
?(刪除) +?w
?(單詞) =?dw
?(刪到單詞尾)c
?(修改) +?$
?(行尾) =?c$
?(修改到行尾)y
?(復制) +?}
?(下一段) =?y}
?(復制下一段)
數字前綴:重復執行
5j
:向下移動5行3dw
:刪除3個單詞10x
:刪除10個字符4p
:粘貼4次
七、實用技巧
.
?(點命令):?重復上一次的編輯操作?(在普通模式下)。宏錄制:
q
?+?寄存器字母
?(如?qa
):開始錄制宏到寄存器?a
執行一系列操作
q
:停止錄制@
?+?寄存器字母
?(如?@a
):執行存儲在寄存器?a
?中的宏@@
:重復執行上一次執行的宏
分屏:
:sp [文件名]
:水平分割窗口 (打開/切換文件):vsp [文件名]
:垂直分割窗口 (打開/切換文件)Ctrl+w
?+?方向鍵
?/?h/j/k/l
:在窗口間切換焦點Ctrl+w
?+?w
:循環切換窗口Ctrl+w
?+?c
:關閉當前窗口Ctrl+w
?+?q
:關閉當前窗口 (如果只剩一個窗口則退出Vim)Ctrl+w
?+?=
:使所有窗口等寬等高Ctrl+w
?+?_
:最大化當前窗口高度Ctrl+w
?+?|
:最大化當前窗口寬度
標簽頁:
:tabnew [文件名]
:在新標簽頁打開文件gt
?/?gT
:切換到下一個/上一個標簽頁:tabn
?/?:tabp
:切換到下一個/上一個標簽頁 (命令模式):tabc
:關閉當前標簽頁
八、配置 (~/.vimrc)
創建或編輯?
~/.vimrc
?文件來自定義 Vim 行為。常用設置示例:set number " 顯示行號 set relativenumber " 顯示相對行號 (可選) syntax on " 語法高亮 set tabstop=4 " Tab鍵寬度為4空格 set shiftwidth=4 " 自動縮進寬度為4空格 set expandtab " 將Tab轉換為空格 set autoindent " 自動縮進 set smartindent " 智能縮進 set hlsearch " 高亮搜索結果 set ignorecase " 搜索忽略大小寫 set smartcase " 如果搜索包含大寫則區分大小寫 set mouse=a " 啟用鼠標支持 (可選)
學習建議
先掌握核心:?模式切換 (
i
,?ESC
)、保存退出 (:wq
,?:q!
)、基本移動 (hjkl
)、刪除 (x
,?dd
)、復制粘貼 (yy
,?p
)、撤銷 (u
)。這是生存技能。練習移動:?高效移動是Vim的靈魂。熟練掌握?
w
,?b
,?e
,?$
,?0
,?gg
,?G
,?/
。理解?
操作符 + 動作
?范式:?這是Vim編輯能力的核心 (d
,?c
,?y
?+?w
,?$
,?t
?等)。逐步學習:?不要試圖一次記住所有命令。在日常編輯中刻意練習新學的1-2個命令。
善用幫助:?
:help
?是寶藏。遇到不熟悉的命令隨時查 (:help x
,?:help :w
?等)。使用 Vim Tutor:?在終端中輸入?
vimtutor
,這是官方交互式教程,強烈推薦初學者完成。
Vim 的精髓在于組合和效率。?熟練后,你的手指幾乎不用離開主鍵盤區就能完成復雜編輯。