Vimcheatsheet
Vim 是一款非常有效率的文本编辑器,这篇文档参考 Vim 8.0,:help key-notation
命令可以查看简单的命令列表。
定位
页面
快捷键 | 说明 |
---|---|
h j k l | 上下左右移动 |
<C-U> / <C-D> | 半页翻页 |
<C-B> / <C-F> | 整页翻页 |
单词
快捷键 | 说明 |
---|---|
b / w | 上一个/下一个单词 |
ge / e | 上一个/下一个单词的末尾 |
行
快捷键 | 说明 |
---|---|
0 (zero) | 行首 |
^ | 行首(不计空格) |
$ | 行尾 |
字符
快捷键 | 说明 |
---|---|
fc | 向前查找字符 c |
Fc | 向后查找字符 c |
文档
快捷键 | 说明 |
---|---|
gg | 第一行 First line |
G | 最后一行 Last line |
:n | 跳转至第 n 行 |
nG | 同上 |
窗口
快捷键 | 说明 |
---|---|
zz | 将当前行移至窗口中心 |
zt | 将当前行移至顶部 |
zb | 将当前行移至底部 |
H | 光标移动至屏幕顶部 |
M | 光标移动至屏幕中心 |
L | 光标移动至屏幕底部 |
搜索
快捷键 | 说明 |
---|---|
n | 下一个匹配的搜索结果 |
N | 上一个匹配的搜索结果 |
* | 下一个匹配的整个单词 |
# | 上一个匹配的整个单词 |
Tab 页
快捷键 | 说明 |
---|---|
:tabedit [file] | 在新的 Tab 中编辑文件 |
:tabfind [file] | 在新的 Tab 中打开文件 |
:tabclose | 关闭当前 Tab |
:tabs | 列出全部 Tab |
:tabfirst | 跳转至第一个 Tab |
:tablast | 跳转至最后一个 Tab |
:tabn | 跳转至下一个 Tab |
:tabp | 跳转至前一个 Tab |
编辑
快捷键 | 说明 |
---|---|
a | 在当前字符后插入 |
A | 在该行的最后插入 |
i | 在当前光标处插入 |
o | 在下一行插入 |
O | 在前一行插入 |
--- | --- |
s | 删除字符并插入 |
S | 删除行并插入 |
C | 删除至该行末尾的字符并插入 |
--- | --- |
r | 替换一个字符 |
R | 进入替换模式 |
--- | --- |
u | 撤销改变 |
<C-R> | 重做改变 |
退出插入模式
快捷键 | 说明 |
---|---|
Esc / <C-[> | 退出插入模式 |
<C-C> | 退出插入模式并终止当前命令 |
剪贴板
快捷键 | 说明 |
---|---|
x | 删除字符 |
--- | --- |
dd | 删除行 (剪切) |
yy | 复制行 |
--- | --- |
p | 粘贴 |
P | 在光标前粘贴 |
--- | --- |
"*p / "+p | 从系统剪贴板中粘贴 |
"*y / "+y | 粘贴至系统剪贴板中 |
选择模式
快捷键 | 说明 |
---|---|
v | 进入选择模式 |
V | 进入选择行模式 |
<C-V> | 进入选择块模式 |
在选择模式中
快捷键 | 说明 |
---|---|
d / x | 删除选择 |
s | 替换选择 |
y | 复制选择 |
详见 操作 来看其他可以执行的操作
操作
操作列表
快捷键 | 说明 |
---|---|
d | 删除 |
y | 复制 |
c | 删除并插入 |
--- | --- |
> | 向右缩进 |
< | 向左缩进 |
= | 自动缩进 |
--- | --- |
g~ | 交换字符 |
gU | 转换为大写字符 |
gu | 转换为小写字符 |
--- | --- |
! | 通过外部的命令过滤 |
详见 :help operator
操作示例
快捷键 | 说明 |
---|---|
d d | 删除当前行 |
d w | 删除下一个单词 |
d b | 删除至单词开始 |
2dd | 删除 2 行 |
d ip | 删除一段 |
(在选择模式中) d | 删除已选择的内容 |
详见: :help motion.txt
文本对象
快捷键 | 说明 |
---|---|
p | 段落 |
w | 单词 |
s | 句子 |
--- | --- |
[ ( { < | 带括号的文本段落 |
' " \ ` | 带引号的字符串 |
--- | --- |
b | 在 [( 的文本块 |
B | 在[{ 的文本块 |
t | 一个 XML 标签的文本块 |
文本对象示例
快捷键 | 说明 |
---|---|
vip | 选择段落 |
vipipipip | 选择更多段落 |
--- | --- |
yip | 复制段落 |
yap | 复制段落(包含空行) |
--- | --- |
dip | 删除段落 |
cip | 删除段落并插入 |
杂项
退出
快捷键 | 说明 |
---|---|
:qa | 关闭所有文件 |
:qa! | 关闭所有文件,不提示保存 |
--- | --- |
:w | 保存 |
:wq / :x | 保存并关闭文件 |
--- | --- |
:q | 关闭文件 |
:q! | 关闭保存,不提示保存 |
--- | --- |
ZZ | 保存并退出 |
ZQ | 不检查内容变化并退出 |
折叠
快捷键 | 说明 |
---|---|
zo / zO | 打开 |
zc / zC | 关闭 |
za / zA | 切换打开/关闭状态 |
--- | --- |
zv | 打开当前行的折叠 |
--- | --- |
zM | 关闭所有折叠 |
zR | 打开所有折叠 |
--- | --- |
zm | 折叠更多 (折叠等级 += 1) |
zr | 折叠更少 (折叠等级 -= 1) |
--- | --- |
zx | 更新折叠 |
大写的字母均是递归的含义,例如 zO
为递归的打开折叠
定位
快捷键 | 说明 |
---|---|
% | 最近的{[()]} 括号匹配 |
[( [{ [< | 前一个 ( 或 { 或 < |
]) | 下一个 |
--- | --- |
[m | 前一个方法开始 |
[M | 前一个方法末尾 |
跳转
快捷键 | 说明 |
---|---|
<C-O> | 返回至上一个位置 |
<C-I> | 前进至下一个位置 |
--- | --- |
gf | 跳转至当前位置指向的文件 |
计数器
快捷键 | 说明 |
---|---|
<C-A> | +1 |
<C-X> | -1 |
窗口
快捷键 | 说明 |
---|---|
z{height}<Cr> | 将窗口调整尺寸至 {height} 高 |
标签
快捷键 | 说明 |
---|---|
:tag Classname | 跳转至第一个 Classname 的定义处 |
--- | --- |
<C-]> | 跳转至定义 |
g] | 查看全部定义 |
<C-T> | 后退至最新的标签 |
<C-O> <C-I> | 前进/后退 |
--- | --- |
:tselect Classname | 查找 Classname 的定义 |
:tjump Classname | 查找 Classname 的定义(并自动选择第一个) |
Diff
快捷键 | 说明 |
---|---|
gvimdiff file1 file2 [file3] | 查看两个文件普通的地方 |
大小写
快捷键 | 说明 |
---|---|
~ | 切换大小写,例如(Case => cASE) |
gU | 转换成大写 |
gu | 转换成小写 |
--- | --- |
gUU | 转换当前行为大写 (也可以用 gUgU ) |
guu | 转换当前行为小写 (也可以用 gugu ) |
可以在正常模式和选择模式下使用这个功能
标记
快捷键 | 说明 |
---|---|
`^ | 上一个指针在插入模式时的位置 |
`. | 在当前的缓冲区中最后变更的位置 |
`" | 当前的缓冲区中最后退出的位置 |
`0 | 最后文件的修改 |
'' | 返回至当前缓冲区跳转的行 |
`` | 返回至当前缓冲区跳转的位置 |
`[ | 跳转至修改或复制的文本开头处 |
`] | 跳转至修改或复制的文本结尾处 |
`< | 跳转至最后选择的内容开头处 |
`> | 跳转至最后选择的内容结尾处 |
--- | --- |
ma | 标记当前的指针位置为 a |
`a | 跳转至指针位置 a |
'a | 跳转至指针位置 a 的行首 |
d'a | 从当前行删除到 a 标记处 |
d`a | 从当前位置删除到 a 标记处 |
c'a | 从当前位置删除到 a 标记处并插入 |
y`a | 从当前位置复制到 a 标记处 |
--- | --- |
:marks | 列出全部的标记 |
:delm a | 删除标记 a |
:delm a-d | 删除标记 a , b , c , d |
:delm abc | 删除标记 a , b , c |
杂项
快捷键 | 说明 |
---|---|
. | 重复上一条命令 |
]p | 保持当前的缩进粘贴 |
--- | --- |
:set ff=unix | 转换 Window 行尾标记为 Unix 行尾标记 |
命令行
快捷键 | 说明 |
---|---|
<C-R><C-W> | 插入当前的单词至命令行 |
<C-R>" | Paste from " register |
<C-X><C-F> | 插入模式中的自动完成路径 |
Text alignment
快捷键 | 说明 |
---|---|
:center | 居中 |
:right" | 右对齐 |
:left | 左对齐 |
详见 :help formatting
计算器
快捷键 | 说明 |
---|---|
<C-R>=128/2 | Shows the result of the division : '64' |
在插入模式中使用
退出并抛出错误
TEXT:cq:cquit
和 :qa
类似, 但抛出一个一样,一般用于 Git 命令的时候
拼写检查
快捷键 | 说明 |
---|---|
:set spell spelllang=en_us | 启动英语的拼写检查 |
]s | 移动至下一个拼写错误的单词开始处 |
[s | 移动至前一个拼写错误的单词的末尾处 |
z= | 当前单词的建议拼写 |
zg | 添加单词至拼写列表 |
zw | 标记一个单位为拼写错误 |
zu / C-X (Insert Mode) | 聪明拼写文件中提示建议单词写法 |
详见 :help spell
参考资料
- Vim cheatsheet (vim.rotrr.com)
- Vim documentation (vimdoc.sourceforge.net)
- Interactive Vim tutorial (openvim.com)