map:命令里,规则是:
- 任何可显示的字符都可以直接键入,反斜杠和 ‘\<’ 除外。
- 反斜杠用两个反斜杠表示 “\\”,或者用
"<Bslash>"
。 - 真正的 ‘\<’ 用 “\<” 或
"<lt>"
表示。只有在没有歧义的时候才可以直接用 ‘\<’ 表示。 "<key>"
的意思是特殊键。其含义上面的表格都有介绍,下面是一些例子:
<Esc>
Escape 键<C-G>
CTRL-G<Up>
光标上移键<C-LeftMouse>
Control + 鼠标左键点击<S-F11>
Shift + 功能键11<M-a>
Meta-a (第 8 位置的 ‘a’)<M-A>
Meta-A (第 8 位置的 ‘A’)<t_kd>
termcap 的 “kd” 入口 (光标下移键)
下面是vim专业手册 329页
左右动作
数值参数 | 快捷键 | 说明 |
---|---|---|
N | h | 左(亦:CTRL-H、<BS> 或 <Left> 键) |
N | l | 右(亦:<Space> 或 <Right> 键) |
0 | 至本行第一个字符 (亦:<Home> 键) | |
^ | 至本行第一个非空白字符 | |
N | $ | 至本行 (加上 N-1 后续行) 最后一个字符 (亦:<End> 键) |
g0 | 至屏幕行第一个字符 (当行回绕时和 “0” 不同) | |
g^ | 至屏幕行第一个非空白字符 (当行回绕时和 “^” 不同) | |
N | g$ | 至屏幕行最后一个字符 (当行回绕时和 “$”不同) |
gm | 至屏幕行中点 | |
N | | | 至第 N 列 (缺省:1) |
N | f{char} | 至右边第 N 次出现 {char} 之处 (find) |
N | F{char} | 至左边第 N 次出现 {char} 之处 (Find) |
N | t{char} | 至右边第 N 次出现 {char} 之前 (till) |
N | T{char} | 至左边第 N 次出现 {char} 之前 (Till) |
N | ; | 重复上次 “f”、”F”、”t” 或 “T” 命令 N 次 |
N | , | 以相反方向重复上次 “f”、”F”、”t” 或 “T” 命令 N 次 |
上下动作
数值参数 | 快捷键 | 说明 |
---|---|---|
N | k | 上移 N 行 (亦 : CTRL-P 和 <Up>) |
N | j | 下移 N 行 (亦 : CTRL-J、CTRL-N、<NL> 和 <Down>) |
N | - | 上移 N 行,至第一个非空白字符 |
N | + | 下移 N 行,至第一个非空白字符 (亦: CTRL-M 和 <CR>) |
N | _ | 下移 N-1 行,至第一个非空白字符 |
N | G | 至第 N 行 (缺省:末行) 第一个非空白字符 |
N | gg | 至第 N 行 (缺省:首行) 第一个非空白字符 |
N | % | 至全文件行数百分之 N 处;必须给出 N,否则是 |%| 命令 |
N | gk | 上移 N 屏幕行 (回绕行时不同于 “k”) |
N | gj | 下移 N 屏幕行 (回绕) |
文本对象动作
数值参数 | 快捷键 | 说明 |
---|---|---|
N | w | 向前 (正向、下同) N 个单词 (word) |
N | W | 向前 N 个空白隔开的字串 |WORD| (WORD) |
N | e | 向前至第 N 个单词词尾 (end) |
N | E | 向前至第 N 个空白隔开的字串 |WORD| 的词尾 (End) |
N | b | 向后 (反向,下同) N 个单词 (backward) |
N | B | 向后至第 N 个空白隔开的字串 |WORD| 的词尾 (Bachward) |
N | ge | 向后至第 N 个单词词尾 |
N | gE | 向后至第 N 个空白隔开的字串 |WORD| 词尾 |
N | ) | 向前 N 个句子 |
N | ( | 向后 N 个句子 |
N | } | 向前 N 个段落 |
N | { | 向后 N 个段落 |
N | ]] | 向前 N 个小节,置于小节的开始 |
N | [[ | 向后 N 个小节,置于小节的开始 |
N | ][ | 向前 N 个小 节,置于小节的末尾 |
N | [] | 向后 N 个小 节,置于小节的末尾 |
N | [( | 向后至 第 N 个未闭合的 ‘(‘ |
N | [{ | 向后至 第 N 个未闭合的 ‘{‘ |
N | [m | 向后至 第 N 个方法 (method) 的开始 (用于 Java) |
N | [M | 向后至 第 N 个方法的结束 (Method) (用于 Java) |
N | ]) | 向前至 第 N 个未闭合的 ‘)’ |
N | ]} | 向前至 第 N 个未闭合的 ‘}’ |
N | ]m | 向前至 第 N 个方法 (method) 的开始 (用于 Java) |
N | ]M | 向前至 第 N 个方法的结束 (Method) (用于 Java) |
N | [# | 向后至 第 N 个未闭合的 “#if” 或 “#else” |
N | ]# | 向前至 第 N 个未闭合的 “#else” 或 “#endif” |
N | [* | 向后至 第 N 个注 释的开始 “/*” |
N | ]* | 向前至 第 N 个注 释的结束 “*/” |
查找模式
数值参数 | 快捷键 | 说明 |
---|---|---|
N | /{pattern}[/[offset]] <CR> | 向前查找第 N 次出现 {pattern} 的地方 |
N | ?{pattern}[?[offset]] <CR> | 向后查找第 N 次出现 {pattern} 的地方 |
N | /<CR> | 向前重复上次查找 |
N | ?<CR> | 向后重复上次查找 |
N | n | 重复上次查找 |
N | N | 相反方向重复上次查找 |
N | * | 向前查找光标下的标识符 |
N | # | 向后查找光标下的标识符 |
N | g* | 同 “*”,但也查找部分匹配 |
N | g# | 同 “*”,但也查找部分匹配 |
gd | 至光标下标识符的局部声明 (goto declaration) | |
gD | 至光标下标识符的全局声明 (goto Declaration) |
| pattern| 查找 模 式中的特殊字符
含义 | magic | nomagic |
---|---|---|
匹配任意单个字符 | . | \. |
匹配行首 | ^ | ^ |
匹配<EOL> | $ | $ |
匹配单词开始 | \< | \< |
匹配单词结束 | \> | \> |
匹配单个标定范围中的字符 | [a-z] | \[a-z] |
匹配单个不在标定范围中的字符 | [^a-z] | \[^a-z] |
匹配一个标识符字符 | \i | \i |
同上但不包括数字 | \I | \I |
匹配一个关键字字符 | \k | \k |
同上但不包括数字 | \K | \K |
匹配一个文件名字符 | \f | \f |
同上但不包括数字 | \F | \F |
匹配一个可显示的字符 | \p | \p |
同上但不包括数字 | \P | \P |
匹配一个空白字符 | \s | \s |
匹配一个非空白字符 | \S | \S |
匹配 <Esc> | \e | \e |
匹配 <Tab> | \t | \t |
匹配 <CR> | \r | \r |
匹配 <BS> | \b | \b |
匹配 0 或多个前面的匹配原 | * | \* |
匹配 1 或多个前面的匹配原 | \+ | \+ |
匹配 0 或 1 个前面的匹配原 | \= | \= |
匹配 2 至 5 个前面的匹配原 | \{2,5} | \{2,5} |
隔开两种可替换的匹配 | | | | |
组合模式为单个匹配原 | \(\) | \(\) |
位置标记和相关动作
数值参数 | 快捷键 | 说明 |
---|---|---|
m{a-zA-Z} | 用标记 {a-zA-Z} 记录当前位置 | |
‘{a-z} | 至当前文件中的标记{a-z} | |
‘{A-Z} | 至任何文件中的标记{A-Z} | |
‘{0-9} | 至 Vim 上次退出的位置 | |
'' | 至上次跳转之前的位置 | |
'" | 至上次编辑此文件的位置 | |
‘[ | 至上次被操作或放置的文本的开始 | |
‘] | 至上次被操作或放置的文本的结尾 | |
‘< | 至 (前次) 可视区域的开始 | |
‘> | 至 (前次) 可视区域的结尾 | |
‘. | 至当前文件最后被改动的位置 | |
'{a-zA-Z0-9[]’"<>.} | 同 ’ ,但同时移动至该行的第一个非空白字符 | |
:marks | 列出活动的标记 | |
N | CTRL-O | 跳转到跳转表中第 N 个较早的位置 |
N | CTRL-I | 跳转到跳转表中第 N 个较晚的位置 |
:ju[mps] | 列出跳转表 |
其他动作
数值参数 | 快捷键 | 说明 |
---|---|---|
% | 找到本行中下一个括号、方括号、注释或"#if"/"#else"/"#endif" 并移动至与其对称的位置 | |
N | H | 至窗口的第 N 行的第一个非空白字符处 (Home) |
M | 至窗口的中间行的第一个非空白字符处 (Middle) | |
N | L | 至窗口的第 N 行 (从下方算) 的第一个非空白字符处 (Last) |
N | go | 至缓冲区的第 N 个字节 |
:[range] go[to] [off] | 至缓冲区的第 [off] |
使用标签
数值参数 | 快捷键 | 说明 |
---|---|---|
:ta[g][!] {tag} | 跳转到标签 {tag} | |
:[count] ta[g][!] | 跳转到标签列表里第 [count] 个较新的标签 | |
CTRL-] | 跳转到光标下的标签,除非文件被改动 | |
:ts[elect][!] [tag] | 列出匹配的标签并选择其中一个跳转 | |
:tj[ump][!] [tag] | 跳转到标签 [tag],当有多个匹配时从列表中选择 | |
:lt[ag][!] [tag] | 跳转到标签 [tag] 并把匹配的标签加到位置列表 | |
:tags | 显示标签列表 | |
N | CTRL-T | 跳转到标签列表中第 N 个较早的标签 |
:[count] po[p][!] | 跳转到标签列表中第 [count] 个较早的标签 | |
:[count] tn[ext][!] | 跳转到向下第 [count] 个匹配的标签 | |
:[count] tp[revious][!] | 跳转到向上第 [count] 个匹配的标签 | |
[count] tr[ewind][!] | 跳转到第 [count] 个匹配的标签 | |
:tl[ast][!] | 跳转到上次匹配的标签 | |
:pt[ag] {tag} | 打开一个显示 {tag} 标签的预览窗口 | |
CTRL-W} | 同 CTRL-] 但在预览窗口显示标签 | |
:pts[elect] | 同 “:tselect” 但在预览窗口显示标签 | |
:ptj[ump] | 同 “:tjump” 但在预览窗口显示标签 | |
:pc[lose] | 关闭标签预览窗口 | |
CTRL-Wz | 关闭标签预览窗口 |