1 移动
序号 |
快捷键 |
功能 |
1 |
hjkl |
方向键 |
2 |
:q |
退出 |
3 |
$ |
至本行最后一个字符 |
4 |
5G |
跳至第 5 行 |
5 |
5k/j/h/j |
上/下/左/右移 5 行 |
6 |
w |
向前 (正向,下同) N 个单词 |
7 |
b |
向后 (反向,下同) N 个单词 |
8 |
) |
向前 N 个句子 |
9 |
} |
向前 N 个段落 |
10 |
5H |
窗口的顶行向下的第 5 行 (Home) |
11 |
M |
窗口的中间行 (Middle) |
12 |
5L |
窗口的底行向上的第 5 行 (Last) |
13 |
ctrl + ] |
跳转到标签 |
14 |
ctrl - o |
从标签跳回 |
15 |
fx |
向前移到本行的字符 x 处(F 为反向移动),; 重复前移,, 反向 |
16 |
zz |
使光标所在行位于屏幕中间 |
2 搜索
序号 |
快捷键 |
功能 |
1 |
N/{pattern} |
向前查找第 N 次出现 {pattern} 的地方 |
2 |
N?{pattern} |
向后查找第 N 次出现 {pattern} 的地方 |
3 |
n |
重复上次查找 |
4 |
N |
相反方向重复上次查找 |
5 |
* |
向前:查找光标下的标识符 |
6 |
# |
向后:查找光标下的标识符 |
2.1 查找模式中的特殊字符
含义 |
magic |
匹配任意单个字符 |
. |
匹配行首 |
^ |
匹配 |
$ |
匹配单词开始 |
\< |
匹配单词结束 |
\> |
匹配单个标定范围中的字符 |
[a-z] |
匹配单个不在标定范围中的字符 |
[^a-z] |
匹配一个标识符字符 |
\i |
同上但不包括数字 |
\I |
匹配一个关键字字符 |
\k |
同上但不包括数字 |
\K |
匹配一个文件名字符 |
\f |
同上但不包括数字 |
\F |
匹配一个可显示的字符 |
\p |
同上但不包括数字 |
\P |
匹配一个空白字符 |
\s |
匹配一个非空白字符 |
\S |
匹配 <Esc> |
\e |
匹配 <Tab> |
\t |
匹配 <CR> |
\r |
匹配 <BS> |
\b |
匹配 1 或多个前面的匹配原 |
* |
匹配 2 或多个前面的匹配原 |
\+ |
匹配 1 或 1 个前面的匹配原 |
\= |
匹配 3 至 5 个前面的匹配原 |
\{2,5} |
隔开两种可替换的匹配 |
\| |
3 位置标签
序号 |
快捷键 |
功能 |
1 |
m{a-zA-Z} |
用标记 {a-zA-Z} 记录当前位置 |
2 |
`{a-z} |
至当前文件中的标记 {a-z} |
3 |
`` |
至上次跳转之前的位置 |
4 |
`" |
至上次编辑此文件的位置 |
5 |
`. |
至当前文件最后被改动的位置 |
6 |
:makrs |
列出活动的标记 |
7 |
:ju |
列出跳转表 |
4 插入模式
以下的快捷键是在 insert 模式下起作用的
序号 |
快捷键 |
功能 |
1 |
ctrl-c |
同 ESC |
2 |
ctrl-h |
同 Backspace, 删除前一个词 |
3 |
ctrl-y |
插入光标上方的字符 |
4 |
ctrl-w |
删除光标前的一个单词 |
5 |
ctrl-t |
在当前行首插入一个 tab 的缩进 |
6 |
ctrl-d |
从当前行首删除一个 tab 的缩进 |
7 |
:r [file] |
将文件 [file] 的内容插入到光标之下 |
8 |
:r! {command} |
将命令 {command} 的标准输出插入到光标之下 |
5 删除文本
序号 |
快捷键 |
功能 |
1 |
N x/X |
删除光标之后 / 前的 N 个字符 |
2 |
{visual}d |
在 visual 模式下,删除高亮的文本 |
3 |
J |
删除本行的 <EOL> |
4 |
df: |
删除当前光标到本行: 处的文本 |
6 复制与移动文本
序号 |
快捷键 |
功能 |
1 |
"{char} |
在接下来的删除、抽出或放置命令中使用寄存器 {char} |
2 |
:reg |
显示所有寄存器的内容 |
3 |
:reg {num} |
显示寄存器 num 的内容 |
4 |
N yy |
抽出 N 行至寄存器 |
5 |
N p |
将一个寄存器的内容放置在光标位置前 (N 次) |
6 |
gp |
同 p,但将光标留在新文本之后 |
7 改变文本
序号 |
快捷键 |
功能 |
1 |
{visual}c |
visual 模式下,修改高亮的文本 |
2 |
>> |
向右移动 tab |
3 |
<< |
向左移动 tab |
4 |
:[range]ce[nter] [width] |
将范围 [range] 包括的行居中对齐 |
5 |
:[range]le[ft] [indent] |
将范围 [range] 中的行靠左对齐 (使用 [indent]) |
6 |
:[range]ri[ght] [width] |
将范围 [range] 中的行靠右对齐 |
8 |
& |
在当前行上重复上一次的 “:s” 命令 |
9 搜索并替换
:[range]s[ubstitute]/{pattern}/{string}/[g][c]
- 以 {string} 替代范围 [range] 包括的行中的 {pattern}
- 与 [g] 共用,替代所有的出现的 {pattern};
- 与 [c] 共用,每一次替代时需要手动确认
10 可视模式
序号 |
快捷键 |
功能 |
1 |
V |
以行方式开始高亮 |
2 |
v |
以字符方式开始高亮 |
3 |
as |
选择 “一个句子” (sentence) |
4 |
ap |
选择 “一个段落” (paragraph) |
5 |
a' |
选择 “一个单引号字符串” |
11 重复命令
序号 |
快捷键 |
功能 |
1 |
N . |
重复最近一次改动 (但计数改为 N) |
2 |
q{a-z} |
记录键入的字符,存入寄存器 {a-z} |
3 |
q |
终止记录 |
4 |
@{a-z} |
执行寄存器 {a-z} 的内容 (N 次) |
12 键盘映射
序号 |
快捷键 |
功能 |
1 |
:ma[p] {lhs} {rhs} |
在普通及可视模式下将 {rhs} 映射为 {lhs} |
2 |
:ma[p]! {lhs} {rhs} |
在插入及命令行模式下将 {rhs} 映射为 {lhs} |
3 |
:no[remap][!] {lhs} {rhs} |
同 “:map”,但不对 {rhs} 重新映射 |
4 |
:unm[ap] {lhs} |
清除普通及可视模式下 {lhs} 的映射 |
5 |
:ma[p] [lhs] |
列出普通及可视模式下以 [lhs] 开始的映射 |
6 |
:cmap |
同 :map, 但仅作用于命令行模式 (Command-line) |
7 |
:mkv[imrc][!] |
将当前的键盘映射、缩写及设置写入文件, ! 表覆盖 |
8 |
:ab[breviate] {lhs} {rhs} |
为 {rhs} 加入缩写 {lhs} |
13 设置
序号 |
快捷键 |
功能 |
1 |
:se[t] |
显示所有被改动的选项 |
2 |
:se[t] {option} |
置位布尔选项 (开启) |
3 |
:se[t] no{option} |
复位布尔选项 (关闭) |
4 |
:se[t] inv{option} |
逆转布尔选项的值 |
5 |
:se[t] {option}={value} |
设置字符串 / 数值选项的值为 {value} |
6 |
:se[t] {option}? |
显示 {option} 的值 |
7 |
:se[t] {option}& |
重置 {option} 为其缺省值 |
8 |
:opt[ions] |
打开一个新窗口,用来参看并设置选项 |
14 撤销
序号 |
快捷键 |
功能 |
1 |
u |
销最近的操作 |
2 |
U |
恢复最近被改动的行 |
3 |
ctrl-r |
重做最近被撤销的改动 |
15 外部命令
序号 |
快捷键 |
功能 |
1 |
:sh |
开启一个 shell 外壳,exit 后返回 vim |
2 |
:!{command} |
通过 shell 外壳执行命令 |
16 Quickfix 命令
序号 |
快捷键 |
功能 |
1 |
:cc [nr] |
显示第 [nr] 个错误 (缺省为同一错误) |
2 |
:cn |
显示下一个错误 |
3 |
:cp |
显示上一个错误 |
4 |
:cl |
列出所有错误 |
5 |
:cf |
从文件’errorfile’ 读入错误 |
6 |
:make [args] |
启动 make,读入错误,并跳转到第一个错误 |
7 |
:gr[ep] [args] |
执行’grepprg’ 程序以找出匹配并跳转到首个匹配 |
17 其他
序号 |
快捷键 |
功能 |
1 |
ctrl-l |
清除并重画屏幕 |
2 |
ctrl-g |
显示当前文件名 (包括路径) 和光标位置 |
3 |
ga |
以十进制、十六进制和八进制显示光标所在字符的 ASCII 值 |
4 |
ga |
以十进制、十六进制和八进制显示光标所在字符的对应字节序列 |
5 |
ctrl-c |
在查找中: 中断查找 |
6 |
:ve |
显示版本信息 |
18 范围
序号 |
快捷键 |
功能 |
1 |
, |
分隔两个行号 |
2 |
; |
同上,但在解释第二个行号之前先移动光标至第一个行号代表的行 |
3 |
. |
当前行 |
4 |
$ |
文件的最后一行 |
5 |
% |
等同于 1,$ (整个文件) |
6 |
* |
等同于 '<,'> (可视区域) |
7 |
't 或 `t |
位置标记 t 的位置 |
8 |
?{pattern}[?] |
前一个匹配 {pattern} 的行 |
19 启动 vim
启动 vim 时可以带多个参数,格式为 vim [options]
序号 |
快捷键 |
功能 |
1 |
-g |
启动 GUI (同时允许其他选项) |
2 |
+[num] |
置光标于第 [num] 行 (缺省: 末行) |
3 |
+{command} |
载入文件后执行命令 {command} |
4 |
-R |
只读模式,隐含 -n |
5 |
-d |
比较模式 diff |
6 |
-r {file} .. |
恢复中断的编辑 |
20 多窗口命令
序号 |
快捷键 |
功能 |
1 |
<ctrl-w> s 或 :split |
将窗口分割成两部分 (split) |
2 |
:split {file} |
分隔窗口并在其中一个编辑 {file} |
3 |
:vs[plit] {file} |
同上,但垂直分割 |
4 |
:sf[ind] {file} |
分割窗口,从 {path} 中找到文件 {file} 并编辑之 |
5 |
ctrl-w ] |
分割窗口并跳转到光标下的标签 |
6 |
ctrl-w f |
分割窗口并编辑光标下的文件名 (file) |
7 |
ctrl-w n 或 :new |
创建新空白窗口 (new) |
8 |
ctrl-w q 或 :q[uit] |
退出编辑并关闭窗口 (quit) |
9 |
ctrl-w c 或 :cl[ose] |
隐藏当前缓冲区并关闭窗口 (close) |
10 |
ctrl-w o 或 :on[ly] |
使当前窗口成为唯一窗口 (only) |
11 |
ctrl-w j |
跳转到下方窗口 |
12 |
ctrl-w k |
跳转到上方窗口 |
13 |
ctrl-w ctrl-w |
移动光标至下方窗口 (折转) (Wrap) |
14 |
ctrl-w W |
移动光标至上方窗口 (折转) (wrap) |
15 |
ctrl-w t |
跳转到顶端窗口 (top) |
16 |
ctrl-w b |
跳转到底端窗口 (bottom) |
17 |
ctrl-w p |
跳转到上一次激活的窗口 (previous) |
18 |
ctrl-w r |
向下旋转窗口 (rotate) |
19 |
ctrl-w R |
向上旋转窗口 (Rotate) |
20 |
ctrl-w x |
将当前窗口与下一个窗口对调 (eXchange) |
21 |
ctrl-w = |
使所有窗口等高等宽 |
22 |
ctrl-w - |
减少当前窗口高度 |
23 |
ctrl-w + |
增加当前窗口高度 |
24 |
ctrl-w _ |
设置当前窗口高度 (缺省: 很高) |
25 |
ctrl-w < |
减少当前窗口宽度 |
26 |
ctrl-w > |
增加当前窗口宽度 |
27 |
ctrl-w |
设置当前窗口宽度 (缺省: 尽可能宽) |
28 |
:e {file} |
在当前分屏中编辑 file 文件 |
21 折叠
在某一段落键入 zfap
会将此段落折叠,其中 zf
是一个操作符 (fold),ap
是一个段落对象 (a paragraph)
使用 zo
打开折叠 (open),zc
关闭折叠 (close)。
折叠可以嵌套,所以我们可以折叠每节中的每个段落,然后再折叠一章中的各节。
序号 |
快捷键 |
功能 |
1 |
set foldmethod=manual |
手动折叠 |
2 |
set foldmethod=indent |
按照缩进折叠 |
3 |
set foldmethod=expr |
按照表达式’foldexpr’ 折叠 |
4 |
set foldmethod=syntax |
按照语法区域折叠 |
5 |
set foldmethod=marker |
按照标志’foldmarker’ 折叠 |
6 |
:{range}fold |
将范围 {range} 包括的行定义为一个折叠 |
7 |
zd |
删除光标下的一个折叠 (delete) |
8 |
zD |
删除光标下的所有折叠 (Delete) |
9 |
zo |
打开光标下的折叠 (open) |
10 |
zO |
打开光标下的所有折叠 (Open) |
11 |
zc |
关闭光标下的一个折叠 (close) |
12 |
zC |
关闭光标下的所有折叠 (Close) |
13 |
zm |
折起更多: 减少’foldlevel’ (more) |
14 |
zM |
关闭所有折叠: 置’foldlevel’ 为 0 |
15 |
zr |
减少折叠: 增加’foldlevel’ (reduce) |
16 |
zR |
打开所有折叠: 置’foldlevel’ 为最大 |
17 |
zn |
快速禁止折叠功能 |
18 |
zi |
禁止 / 恢复原来的折叠 |