返回
首页

Vim cheatsheet

退出

ShortcutDescription
:w保存
:wq / :x保存并关闭
:q关闭文件
:q!关闭文件,放弃修改
:qa关闭所有文件
:qa!关闭所有文件,放弃修改
ZZ保存并退出
ZQ退出,且不检查变更

导航

ShortcutDescription
h j k l方向键
<C-u> / <C-d>翻半页 上/下
<C-b> / <C-f>翻一页 上/下

单词

ShortcutDescription
b / w前一个/后一个 单词的开头
ge / e前一个/后一个 单词的结尾

ShortcutDescription
0 (零)行开始
^行开始 (非空白处)
$行结束

字符

ShortcutDescription
fx下一个字符x
Fx上一个字符x

文档

ShortcutDescription
gg第一行
G最后一行
:n跳转到第 n
nG跳转到第 n

窗口

ShortcutDescription
zz居中本行
zt置顶本行
zb置尾本行
H移动到窗口首行
M移动到窗口中间
L移动到窗口尾行

查找

ShortcutDescription
n下一个匹配项
N上一个匹配项
*当前光标所在单词的下一匹配项
#当前光标所在单词的上一匹配项

Tab页

ShortcutDescription
:tabedit [file]在新tab页中编辑文件
:tabfind [file]文件若存在,则在新标签中打开
:tabclose关闭当前tab
:tabs列出所有tab
:tabfirst跳转到第一个tab
:tablast跳转到最后一个tab
:tabn跳转到下一个tab
:tabp跳转到上一个tab

编辑

ShortcutDescription
a在光标后插入
A在行尾插入
i插入模式
o在当前行后插入一个新行
O在当前行前插入一个新行
s删除当前字符,并开启插入模式
S删除当前行,并开启插入模式
C删除至行尾,并开启插入模式
r替换一个字符
R开启替换模式
u撤销
<C-R>重做

退出插入模式

ShortcutDescription
Esc / <C-[>退出插入模式
<C-C>退出插入模式,并放弃当前命令

剪贴板

ShortcutDescription
x删除当前字符
dd删除当前行 (剪切)
yy复制当前行 (复制),等于 ddp
p粘贴
P粘贴在当前位置之前
"*p / "+p从系统剪贴板进行粘贴
"*y / "+y粘贴到系统剪贴板

视觉模式

ShortcutDescription
v进入视觉模式
V进入行视觉模式
<C-V>进入块视觉模式

在视觉模式中

ShortcutDescription
d / x删除选区内容
s替换选取内容
y复制当前行 (复制)

更多操作可以参考 Operators

操作指令

使用

这些在正常模式下执行,根据指令范围不同,操作指定能操作一定区域的文本。

dw
操作指令指令范围

操作指令列表

ShortcutDescription
d删除
y复制
c变更 (先删除载插入)
>向右缩进
<向左使劲
=自动缩进
g~转换大小写
gU大写
gu小写
!通过外部程序过滤

示例

结合指令范围来应用操作指令。

ShortcutDescription
dd(重复字母) 删除当前行
dw删除下一个单词
db删除到单词开头
2dd删除两行
dip删除文本对象 (段落内部)
(在视觉模式下) d删除选区内容

文本对象

使用

文本对象使您可以在文本块中或周围进行操作(使用操作指令)。

vip
操作指令范围 [i]nside or [a]round文本对象

文本对象

ShortcutDescription
p段落
w单词
s句子
[ ( { <[], (), 或 {} 区块
' " 引用字符串
b[( 块
B[{ 中的块
tXML 标签块

Examples

ShortcutDescription
vip选择段落
vipipipip选择更多
yip复制内部段落
yap复制段落 (包括新行)
dip删除内部段落
cip更改内部段落

See Operators for other things you can do.

Diff

ShortcutDescription
gvimdiff file1 file2 [file3]See differences between files, in HMI

杂项

折叠

ShortcutDescription
zo / zO打开当前折叠
zc / zC折叠当前行
za / zA转换折叠状态
zv查看此行
zM关闭所有
zR打开所有
zm折叠更多 (折叠层级 += 1)
zr折叠更少 (折叠层级 -= 1)
zx更新折叠

大写的是递归操作 (例如, zO 是递归打开).

导航

ShortcutDescription
%最近/匹配 {[()]}
[( [{ [<上一个 ({<
])下一个
[m上一个方法开始
[M上一个方法结束

跳转

ShortcutDescription
<C-O>返回上一个光标位置
<C-I>跳转下一个光标位置
gf跳转到光标中的文件

计数器

ShortcutDescription
<C-A>+1
<C-X>-1

窗口

z{height}<Cr>将窗格调整为高{height}

标签

ShortcutDescription
:tag Classname跳转到第一个定义为Classname处
<C-]>跳转到定义
g]查看所有定义
<C-T>返回上一个标签
<C-O> <C-I>后退/前进
:tselect Classname查找Classname的定义
:tjump Classname查找Classname的定义 (自动选择第一个)

大小写

ShortcutDescription
~大小写转换 (Case => cASE)
gU大写
gu小写
gUU大写当前行 (== gUgU)
guu小写当前行 (== gugu)

正常模式和视觉模式均可使用

标记

ShortcutDescription
^插入模式下光标的最后位置
.当前缓冲区的最后更改
"最后退出的当前缓冲区
0在上次编辑的文件中
''返回当前缓冲区中从哪里跳到的行
返回当前缓冲区的位置
[到先前更改或粘贴的文本的开头
]结束先前更改或粘贴的文本
<到最后一次视觉选择的开始
>结束最后的视觉选择
ma将此光标位置标记为a
a跳到光标位置a
'a跳转到位置为a的行的开头
d'a从当前行中删除标记 a 的行
da从当前位置删除到标记a的位置
c'a将文本从当前行更改为a
ya将文本从当前位置复制到a的位置
:marks列出所有当前标记
:delm a删除标记 a
:delm a-d删除标记 a, b, c, d
:delm abc删除标记 a, b, c

杂项

ShortcutDescription
.重复上一条命令
]p在当前缩进级别下粘贴
:set ff=unix将Windows行尾转换为Unix行尾(CRLF => LF

命令行

ShortcutDescription
<C-R><C-W>将当前单词插入命令行
<C-R>"从“寄存器”粘贴
<C-X><C-F>在插入模式下自动补全路径

文本对齐

:center [width]
:right [width]
:left

// TODO

计算

ShortcutDescription
<C-R>=128/2显示除法结果 '64'

在插入模式中使用。

错误退出

:cq
:cquit

:qa类似,但是会引发错误。非常适合中止Git命令。

拼写检查

ShortcutDescription
:set spell spelllang = zh_CN打开美国英语拼写检查
]s光标后移至下一个拼错的单词
[s移至光标之前的上一个拼写错误的单词
z=在光标下方/之后建议拼写该单词
zg在单词列表中添加单词
zw将单词标记为错误/拼写错误
zu / C-X (Insert Mode)光标处错误单词的拼写建议

更多