Vim cheatsheet
退出
Shortcut | Description |
---|---|
:w | 保存 |
:wq / :x | 保存并关闭 |
:q | 关闭文件 |
:q! | 关闭文件,放弃修改 |
:qa | 关闭所有文件 |
:qa! | 关闭所有文件,放弃修改 |
ZZ | 保存并退出 |
ZQ | 退出,且不检查变更 |
导航
Shortcut | Description |
---|---|
h j k l | 方向键 |
<C-u> / <C-d> | 翻半页 上/下 |
<C-b> / <C-f> | 翻一页 上/下 |
单词
Shortcut | Description |
---|---|
b / w | 前一个/后一个 单词的开头 |
ge / e | 前一个/后一个 单词的结尾 |
行
Shortcut | Description |
---|---|
0 (零) | 行开始 |
^ | 行开始 (非空白处) |
$ | 行结束 |
字符
Shortcut | Description |
---|---|
fx | 下一个字符x 处 |
Fx | 上一个字符x 处 |
文档
Shortcut | Description |
---|---|
gg | 第一行 |
G | 最后一行 |
:n | 跳转到第 n 行 |
nG | 跳转到第 n 行 |
窗口
Shortcut | Description |
---|---|
zz | 居中本行 |
zt | 置顶本行 |
zb | 置尾本行 |
H | 移动到窗口首行 |
M | 移动到窗口中间 |
L | 移动到窗口尾行 |
查找
Shortcut | Description |
---|---|
n | 下一个匹配项 |
N | 上一个匹配项 |
* | 当前光标所在单词的下一匹配项 |
# | 当前光标所在单词的上一匹配项 |
Tab页
Shortcut | Description |
---|---|
:tabedit [file] | 在新tab页中编辑文件 |
:tabfind [file] | 文件若存在,则在新标签中打开 |
:tabclose | 关闭当前tab |
:tabs | 列出所有tab |
:tabfirst | 跳转到第一个tab |
:tablast | 跳转到最后一个tab |
:tabn | 跳转到下一个tab |
:tabp | 跳转到上一个tab |
编辑
Shortcut | Description |
---|---|
a | 在光标后插入 |
A | 在行尾插入 |
i | 插入模式 |
o | 在当前行后插入一个新行 |
O | 在当前行前插入一个新行 |
s | 删除当前字符,并开启插入模式 |
S | 删除当前行,并开启插入模式 |
C | 删除至行尾,并开启插入模式 |
r | 替换一个字符 |
R | 开启替换模式 |
u | 撤销 |
<C-R> | 重做 |
退出插入模式
Shortcut | Description |
---|---|
Esc / <C-[> | 退出插入模式 |
<C-C> | 退出插入模式,并放弃当前命令 |
剪贴板
Shortcut | Description |
---|---|
x | 删除当前字符 |
dd | 删除当前行 (剪切) |
yy | 复制当前行 (复制),等于 ddp |
p | 粘贴 |
P | 粘贴在当前位置之前 |
"*p / "+p | 从系统剪贴板进行粘贴 |
"*y / "+y | 粘贴到系统剪贴板 |
视觉模式
Shortcut | Description |
---|---|
v | 进入视觉模式 |
V | 进入行视觉模式 |
<C-V> | 进入块视觉模式 |
在视觉模式中
Shortcut | Description |
---|---|
d / x | 删除选区内容 |
s | 替换选取内容 |
y | 复制当前行 (复制) |
更多操作可以参考 Operators
操作指令
使用
这些在正常模式下执行,根据指令范围不同,操作指定能操作一定区域的文本。
d | w |
操作指令 | 指令范围 |
操作指令列表
Shortcut | Description |
---|---|
d | 删除 |
y | 复制 |
c | 变更 (先删除载插入) |
> | 向右缩进 |
< | 向左使劲 |
= | 自动缩进 |
g~ | 转换大小写 |
gU | 大写 |
gu | 小写 |
! | 通过外部程序过滤 |
示例
结合指令范围来应用操作指令。
Shortcut | Description |
---|---|
d d | (重复字母) 删除当前行 |
d w | 删除下一个单词 |
d b | 删除到单词开头 |
2dd | 删除两行 |
d ip | 删除文本对象 (段落内部) |
(在视觉模式下) d | 删除选区内容 |
文本对象
使用
文本对象使您可以在文本块中或周围进行操作(使用操作指令)。
v | i | p |
操作指令 | 范围 [i]nside or [a]round | 文本对象 |
文本对象
Shortcut | Description |
---|---|
p | 段落 |
w | 单词 |
s | 句子 |
[ ( { < | [], (), 或 {} 区块 |
' "
| 引用字符串 |
b | [( 块 |
B | [{ 中的块 |
t | XML 标签块 |
Examples
Shortcut | Description |
---|---|
vip | 选择段落 |
vipipipip | 选择更多 |
yip | 复制内部段落 |
yap | 复制段落 (包括新行) |
dip | 删除内部段落 |
cip | 更改内部段落 |
See Operators for other things you can do.
Diff
Shortcut | Description |
---|---|
gvimdiff file1 file2 [file3] | See differences between files, in HMI |
杂项
折叠
Shortcut | Description |
---|---|
zo / zO | 打开当前折叠 |
zc / zC | 折叠当前行 |
za / zA | 转换折叠状态 |
zv | 查看此行 |
zM | 关闭所有 |
zR | 打开所有 |
zm | 折叠更多 (折叠层级 += 1) |
zr | 折叠更少 (折叠层级 -= 1) |
zx | 更新折叠 |
大写的是递归操作 (例如, zO
是递归打开).
导航
Shortcut | Description |
---|---|
% | 最近/匹配 {[()]} |
[( [{ [< | 上一个 ( 或 { 或 < |
]) | 下一个 |
[m | 上一个方法开始 |
[M | 上一个方法结束 |
跳转
Shortcut | Description |
---|---|
<C-O> | 返回上一个光标位置 |
<C-I> | 跳转下一个光标位置 |
gf | 跳转到光标中的文件 |
计数器
Shortcut | Description |
---|---|
<C-A> | +1 |
<C-X> | -1 |
窗口
z{height}<Cr> | 将窗格调整为高{height} 行 |
标签
Shortcut | Description |
---|---|
:tag Classname | 跳转到第一个定义为Classname处 |
<C-]> | 跳转到定义 |
g] | 查看所有定义 |
<C-T> | 返回上一个标签 |
<C-O> <C-I> | 后退/前进 |
:tselect Classname | 查找Classname的定义 |
:tjump Classname | 查找Classname的定义 (自动选择第一个) |
大小写
Shortcut | Description |
---|---|
~ | 大小写转换 (Case => cASE) |
gU | 大写 |
gu | 小写 |
gUU | 大写当前行 (== gUgU ) |
guu | 小写当前行 (== gugu ) |
正常模式和视觉模式均可使用
标记
Shortcut | Description |
---|---|
| 插入模式下光标的最后位置 |
| 当前缓冲区的最后更改 |
| 最后退出的当前缓冲区 |
| 在上次编辑的文件中 |
'' | 返回当前缓冲区中从哪里跳到的行 |
| 返回当前缓冲区的位置 |
| 到先前更改或粘贴的文本的开头 |
| 结束先前更改或粘贴的文本 |
| 到最后一次视觉选择的开始 |
| 结束最后的视觉选择 |
ma | 将此光标位置标记为a |
| 跳到光标位置a |
'a | 跳转到位置为a 的行的开头 |
d'a | 从当前行中删除标记 a 的行 |
d | 从当前位置删除到标记a的位置 |
c'a | 将文本从当前行更改为a 行 |
y | 将文本从当前位置复制到a的位置 |
:marks | 列出所有当前标记 |
:delm a | 删除标记 a |
:delm a-d | 删除标记 a , b , c , d |
:delm abc | 删除标记 a , b , c |
杂项
Shortcut | Description |
---|---|
. | 重复上一条命令 |
]p | 在当前缩进级别下粘贴 |
:set ff=unix | 将Windows行尾转换为Unix行尾(CRLF => LF ) |
命令行
Shortcut | Description |
---|---|
<C-R><C-W> | 将当前单词插入命令行 |
<C-R>" | 从“寄存器”粘贴 |
<C-X><C-F> | 在插入模式下自动补全路径 |
文本对齐
:center [width]
:right [width]
:left
// TODO
计算
Shortcut | Description |
---|---|
<C-R>=128/2 | 显示除法结果 '64' |
在插入模式中使用。
错误退出
:cq
:cquit
与:qa
类似,但是会引发错误。非常适合中止Git命令。
拼写检查
Shortcut | Description |
---|---|
:set spell spelllang = zh_CN | 打开美国英语拼写检查 |
]s | 光标后移至下一个拼错的单词 |
[s | 移至光标之前的上一个拼写错误的单词 |
z= | 在光标下方/之后建议拼写该单词 |
zg | 在单词列表中添加单词 |
zw | 将单词标记为错误/拼写错误 |
zu / C-X (Insert Mode) | 光标处错误单词的拼写建议 |
更多
- Vim cheatsheet (vim.rotrr.com)
- Vim documentation (vimdoc.sourceforge.net)
- Interactive Vim tutorial (openvim.com)