速查表
这是一篇 reference,不承担完整解释任务。真正要理解 Vim 的编辑模型,回到前面的入门和配置笔记;这里用于工作时快速查命令。
移动光标
| 命令 | 说明 |
|---|---|
h j k l | 左/下/上/右 |
w / b | 下一个/上一个单词开头 |
W / B | 下一个/上一个 WORD(含标点) |
e / ge | 下一个/上一个单词结尾 |
0 / ^ / $ | 行首 / 行首非空白 / 行尾 |
gg / G | 文件首行 / 末行 |
nG / :n | 跳转到第 n 行 |
f<char> / F<char> | 向前/向后查找字符 |
t<char> / T<char> | 向前/后到字符前 |
} / { | 下一段 / 上一段 |
H / M / L | 屏幕顶/中/底 |
zz | 光标居中屏幕 |
Ctrl+d / Ctrl+u | 下/上半屏 |
Ctrl+f / Ctrl+b | 下/上一屏 |
% | 跳转到配对括号 |
gd / gD | 局部/全局定义跳转 |
插入与编辑
| 命令 | 说明 |
|---|---|
i / a | 光标前/后插入 |
I / A | 行首/行尾插入 |
o / O | 下方/上方新行插入 |
s / S | 删除字符/行并插入 |
r<char> | 替换一个字符 |
R | 进入替换模式 |
cw / ce | 修改单词 |
cc / C | 修改整行 / 修改到行尾 |
ciw | 修改光标处单词 |
J | 合并下一行 |
u / Ctrl+r | 撤销 / 重做 |
. | 重复上次命令 |
选择与操作
| 命令 | 说明 |
|---|---|
v | 字符可视化模式 |
V | 行可视化模式 |
Ctrl+v | 块可视化模式 |
y / d / x | 复制 / 删除 (剪切) / 删除字符 |
p / P | 光标后/前粘贴 |
yy / dd | 复制/删除当前行 |
yw / dw | 复制/删除单词 |
yiw / diw | 复制/删除光标处单词 |
y$ / d$ / D | 复制/删除到行尾 |
">y / "+p | 系统剪贴板复制/粘贴 |
"> / < | 向右/左缩进选区 |
~ | 切换选区大小写 |
搜索与替换
| 命令 | 说明 |
|---|---|
/pattern | 向前搜索 |
?pattern | 向后搜索 |
n / N | 下一个/上一个匹配 |
* / # | 向前/后搜索当前单词 |
:s/old/new | 替换当前行首个 |
:s/old/new/g | 替换当前行全部 |
:%s/old/new/g | 替换全文全部 |
:%s/old/new/gc | 替换全文(逐个确认) |
:noh | 清除搜索高亮 |
\v | 启用非常神奇模式(正则免转义) |
文件与窗口
| 命令 | 说明 |
|---|---|
:e file | 打开文件 |
:w | 保存 |
:wq / :x / ZZ | 保存并退出 |
:q / :q! | 退出 / 强制退出 |
:w !sudo tee % | 用 sudo 保存只读文件 |
:sp file | 水平分割打开文件 |
:vs file | 垂直分割打开文件 |
Ctrl+ws / Ctrl+wv | 水平/垂直分割窗口 |
Ctrl+ww | 切换窗口 |
Ctrl+wq | 关闭窗口 |
Ctrl+w= | 窗口等大 |
Ctrl+whjkl | 切换到左/下/上/右窗口 |
:tabnew file | 新标签打开文件 |
gt / gT | 下一个/上一个标签 |
:tabc / :tabo | 关闭当前/其他标签 |
标记与跳转
| 命令 | 说明 |
|---|---|
m<char> | 设置标记 |
`<char>` | 跳转到标记位置 |
'<char> | 跳转到标记行首 |
“ | 返回上次跳转位置 |
'" | 返回上次编辑位置 |
`. | 返回上次修改位置 |
Ctrl+o / Ctrl+i | 后退/前进跳转历史 |
:marks | 列出所有标记 |
实用技巧
文件备份和编辑
备份当前文件并继续编辑:
:w hosts.back.240808 | e!快速查找替换
在所有文本文件中查找并替换:
:args **/*.txt | argdo %s/pattern/replacement/g | update批量处理
批量删除所有文件的行尾空白:
:args **/* | argdo %s/\s\+$//e | update快速拼接文件内容
将多个文件内容拼接到当前光标处:
:r !cat file1.txt file2.txt file3.txt窗口管理
垂直分割打开文件,关闭其他窗口:
:vsplit file.txt | only编译与运行代码
编译当前项目并打开错误列表:
:make | copen运行当前 Python 文件并显示输出:
:w | !python3 %批量执行宏
在所有文本文件中执行寄存器 q 中的宏:
:args **/*.txt | argdo normal @q | update自动格式化代码
格式化整个文件并保存:
gg=G | w删除重复行
:sort | %!uniq -u对文件行编号
:%!cat -n将整个文档复制到剪贴板
:%w !pbcopy # Mac OS X
:%w !xclip -i -sel c # GNU/Linux
:%w !xsel -i -b # GNU/Linux使用边界
速查表适合救急,不适合替代理解。批量替换、宏、argdo、外部命令过滤这类操作在执行前先缩小范围,并确认有 Git diff 或备份可以回退。