Vim 常用命令速查列表(附英文全称)
Vim 核心是模式化操作,所有命令按使用场景分模式整理,命令部分用反引号高亮,便于快速定位。
1. 模式切换命令
| 命令 | 英文全称 | 含义 | 用法 |
|---|
i | Insert | 进入插入模式(光标前插入) | 正常模式下按i,光标位置直接输入字符(左侧) |
a | Append | 进入插入模式(光标后插入) | 正常模式下按a,光标右移一位,输入字符(右侧) |
I | Insert at line start | 行首插入模式 | 正常模式下按I,光标跳至当前行第一个非空字符处插入 |
A | Append at line end | 行尾插入模式 | 正常模式下按A,光标跳至当前行末尾插入 |
o | Open new line below | 下方新建行并插入 | 正常模式下按o,当前行下方新建空白行并进入插入模式 |
O | Open new line above | 上方新建行并插入 | 正常模式下按O,当前行上方新建空白行并进入插入模式 |
s | Substitute | 删除光标字符并插入 | 正常模式下按s,删除光标处字符后进入插入模式 |
S | Substitute line | 删除整行并插入 | 正常模式下按S,删除当前行后进入插入模式(等价于cc) |
Esc | Escape | 退出插入/可视模式 | 插入/可视模式下按Esc,立即返回正常模式 |
v | Visual | 字符级可视模式 | 正常模式下按v,移动光标选中连续字符 |
V | Visual Line | 行级可视模式 | 正常模式下按V,直接选中当前行,移动光标选中多行 |
Ctrl+v | Visual Block | 列块可视模式 | 正常模式下按Ctrl+v,选中矩形列块(如多行同一列) |
2. 正常模式 - 光标高效移动
| 命令 | 英文全称 | 含义 | 用法 |
|---|
h/j/k/l | Left/Down/Up/Right | 光标上下左右移动 | 替代方向键,按h左移、j下移、k上移、l右移 |
0 | Zero (line start) | 跳至当前行首(第一个字符) | 正常模式下按0,直接到行最左侧 |
$ | End of line | 跳至当前行尾 | 正常模式下按$,直接到行最后一个字符 |
^ | Caret (first non-blank) | 跳至行第一个非空字符 | 正常模式下按^,跳过行首空格/制表符 |
w/W | Word forward (small/big) | 跳至下一个单词开头 | w按非空白符分隔单词,W按空白符分隔(忽略标点) |
b/B | Word backward (small/big) | 跳至上一个单词开头 | b按非空白符回跳,B按空白符回跳 |
e/E | End of word (small/big) | 跳至当前单词末尾 | 对应w/W的单词尾跳转 |
gg | Go to top | 跳至文件第一行 | 正常模式下按gg,直接到文件开头 |
G | Go to bottom | 跳至文件最后一行 | 正常模式下按G,直接到文件结尾 |
nG/:n | Go to line n | 跳至第n行 | 按5G或输入:5回车,跳至第5行(n为数字) |
Ctrl+f/Ctrl+b | Forward/Backward page | 向下/向上翻页 | 等价于PageDown/PageUp,翻整页 |
Ctrl+d/Ctrl+u | Down/Up half page | 向下/向上翻半页 | 翻页幅度更小,适合精细浏览 |
% | Match bracket | 跳至匹配的括号 | 光标在()/[]/{}上时按%,跳至对应匹配括号 |
3. 正常模式 - 编辑操作(删除/复制/粘贴/撤销)
| 命令 | 英文全称 | 含义 | 用法 |
|---|
dd | Delete line | 删除当前行 | 正常模式下按dd,删除整行(暂存剪贴板) |
ndd | Delete n lines | 删除n行 | 按3dd,删除当前行及下方2行(共3行) |
d$/d0 | Delete to end/start of line | 删除光标至行尾/行首 | d$删光标后内容,d0删光标前内容 |
dw | Delete word | 删除光标至下一个单词开头 | 按dw,删除当前单词光标后的部分 |
x/X | Delete character (current/before) | 删除光标处/前字符 | x等价于Delete,X等价于Backspace |
yy | Yank line | 复制当前行 | 正常模式下按yy,复制整行到剪贴板 |
nyy | Yank n lines | 复制n行 | 按5yy,复制当前行及下方4行(共5行) |
y$/y0 | Yank to end/start of line | 复制光标至行尾/行首 | 对应d$/d0的复制操作 |
p/P | Paste (after/before) | 粘贴剪贴板内容 | p粘贴到光标后/下,P粘贴到光标前/上 |
u | Undo | 撤销上一步操作 | 按u,可多次撤销(逐步回退) |
Ctrl+r | Redo | 恢复撤销的操作 | 按Ctrl+r,重做被u撤销的操作 |
. | Repeat | 重复上一次编辑操作 | 按.,快速复用最近一次修改(如dd删行后按.再删一行) |
4. 正常模式 - 文本修改(替换/缩进/大小写)
| 命令 | 英文全称 | 含义 | 用法 |
|---|
r | Replace | 替换单个字符 | 按r+目标字符,光标处字符被替换(不进插入模式) |
R | Replace mode | 持续替换模式 | 按R,输入字符逐个覆盖光标后内容,Esc退出 |
cc | Change line | 删除整行并插入 | 等价于S,删行后进入插入模式 |
ncw | Change n words | 修改n个单词 | 按2cw,删2个单词后进入插入模式 |
>>/<< | Indent right/left | 行右/左缩进 | >>右缩进(加制表位),<<左缩进(减制表位) |
n>>/n<< | Indent n lines right/left | n行右/左缩进 | 按3>>,当前行及下方2行均右缩进 |
~ | Toggle case | 切换字符大小写 | 按~,光标处字符大小写翻转(如A→a,b→B) |
gUw/guw | Global Upper/Lower Word | 单词转大写/小写 | 按gUw转大写,guw转小写 |
5. 可视模式 - 选择与操作
| 命令 | 英文全称 | 含义 | 用法 |
|---|
v/V/Ctrl+v+移动 | Visual + move | 选中字符/行/列块 | 先按模式键,再用h/j/k/l移动选中内容 |
d | Delete | 删除选中内容 | 选中后按d,直接删除所选文本 |
y | Yank | 复制选中内容 | 选中后按y,复制到剪贴板 |
c | Change | 删除选中并插入 | 选中后按c,删内容并进入插入模式 |
>/< | Indent right/left | 选中内容缩进 | 选中后按>右缩进,<左缩进 |
~ | Toggle case | 选中内容大小写翻转 | 选中后按~,所有字符大小写翻转 |
6. 命令行模式 - 文件操作(保存/退出/打开)
| 命令 | 英文全称 | 含义 | 用法 |
|---|
:w | Write | 保存文件 | 输入:w回车,保存修改(不退出) |
:w filename | Write to filename | 另存为指定文件 | 输入:w test.txt,保存为test.txt |
:q | Quit | 退出Vim | 输入:q,未修改则退出,修改则提示 |
:q! | Quit force | 强制退出(不保存) | 输入:q!,放弃所有修改并退出 |
:wq/:x/ZZ | Write+Quit / Exit | 保存并退出 | :wq强制保存退出,:x/ZZ仅修改时保存 |
:e filename | Edit filename | 打开指定文件 | 输入:e test.py,打开test.py(需确认当前文件保存) |
:e! | Edit force | 放弃修改并重新加载 | 输入:e!,恢复文件原始版本 |
:w !sudo tee % | Write with sudo | 用sudo权限保存 | 解决只读文件无法保存(%代表当前文件) |
7. 命令行模式 - 查找与替换
| 命令 | 英文全称 | 含义 | 用法 |
|---|
/pattern | Search forward | 正向查找 | 输入/hello,向下找“hello”,n下一个,N上一个 |
?pattern | Search backward | 反向查找 | 输入?world,向上找“world”,n上一个,N下一个 |
:set ic/:set noic | Set ignore/no ignore case | 开启/关闭忽略大小写 | 查找时不区分/区分大小写 |
:noh | No highlight | 取消查找高亮 | 输入:noh,清除查找结果的高亮 |
:s/old/new | Substitute | 替换当前行第一个匹配项 | 输入:s/foo/bar,替换当前行首个“foo”为“bar” |
:s/old/new/g | Substitute global | 替换当前行所有匹配项 | 输入:s/foo/bar/g,替换当前行全部“foo” |
:%s/old/new/g | Substitute global (all lines) | 替换全文件匹配项 | 输入:%s/foo/bar/g,替换所有行的“foo” |
:%s/old/new/gc | Substitute global confirm | 交互式替换 | 替换前提示确认(y=确认,n=跳过,a=全部,q=退出) |
:n1,n2s/old/new/g | Substitute (lines n1-n2) | 替换指定行匹配项 | 输入:5,10s/foo/bar/g,替换5-10行的“foo” |
8. 命令行模式 - 窗口/标签页操作
| 命令 | 英文全称 | 含义 | 用法 |
|---|
:sp filename | Split window | 水平分割窗口 | 输入:sp test.py,下方窗口打开test.py |
:vsp filename | Vertical split window | 垂直分割窗口 | 输入:vsp test.py,右侧窗口打开test.py |
Ctrl+w h/j/k/l | Window move | 切换分割窗口 | 按Ctrl+w后按方向键,切换到对应窗口 |
:tabnew filename | Tab new | 新建标签页 | 输入:tabnew test.py,新建标签页并打开文件 |
gt/gT | Go to next/previous tab | 切换标签页 | gt下一个,gT上一个 |
:tabclose | Tab close | 关闭当前标签页 | 输入:tabclose,关闭当前标签页 |
9. 其他实用命令
| 命令 | 英文全称 | 含义 | 用法 |
|---|
:set nu/:set nonu | Set number/no number | 显示/隐藏行号 | 输入:set nu显示行号,:set nonu隐藏 |
:set list | Set list | 显示不可见字符 | 显示空格(·)、制表符(^I)、换行符($) |
gf | Go to file | 跳至光标处的文件 | 光标在文件名上按gf,直接打开该文件 |
:help cmd | Help command | 查看命令帮助 | 输入:help dd,查看dd的官方说明 |
总结
- Vim 核心是模式切换,
Esc是返回正常模式的万能键,优先用正常模式的高效命令而非插入模式; - 日常编辑高频组合:
gg/G(跳行)+ dd/yy/p(删/复制/粘贴)+ :%s/old/new/gc(全局替换); - 多文件编辑优先用
:sp/:vsp(分割窗口)或:tabnew(标签页),Ctrl+w是窗口切换核心组合键。