index

index.txt 适用于 Vim 9.2 版本。 最近更新: 2025年11月 VIM 参考手册 by Bram Moolenaar 译者: Willis index 本文件罗列了各模式下的所有命令。每条命令附带标签和简短说明。列表按 ASCII 码值 排序。 提示: 要找特定功能,可用搜索命令。例如,想要查找删除相关操作,执行: /删除 。 1. 插入模式 insert-index 2. 普通模式 normal-index 2.1. 文本对象 objects 2.2. 窗口命令 CTRL-W 2.3. 方括号命令 [ 2.4. 'g' 系列命令 g 2.5. 'z' 系列命令 z 2.6. 操作符等待模式 operator-pending-index 3. 可视模式 visual-index 4. 命令行编辑 ex-edit-index 5. 终端作业模式 terminal-job-index 6. EX 命令 ex-cmd-index 关于选项总览,可见 option-list 。 关于内建函数总览,可见 functions 。 关于 Vim 变量列表,可见 vim-variable 。 关于完整帮助项目清单,可见 help-tags

1. 插入模式 insert-index

标签 按键 插入模式功能说明

i_CTRL-@ CTRL-@ 插入最近插入的文本并退出插入模式 i_CTRL-A CTRL-A 插入最近插入的文本 CTRL-B 不用 i_CTRL-B-gone i_CTRL-C CTRL-C 'insertmode' 关闭时: 退出插入模式且不检查缩写 i_CTRL-D CTRL-D 当前行减少一层缩进 ('shiftwidth') i_CTRL-E CTRL-E 插入光标下方的字符 CTRL-F 不用 (但 'cinkeys' 缺省值中用以重新缩进当前行) i_CTRL-G_U CTRL-G U 下一次同行的光标移动不拆分撤销块 i_CTRL-G_j CTRL-G CTRL-J 光标下移一行,回到开始插入时所在的列 i_CTRL-G_j CTRL-G j 光标下移一行,回到开始插入时所在的列 i_CTRL-G_j CTRL-G <Down> 光标下移一行,回到开始插入时所在的列 i_CTRL-G_k CTRL-G CTRL-K 光标上移一行,回到开始插入时所在的列 i_CTRL-G_k CTRL-G k 光标上移一行,回到开始插入时所在的列 i_CTRL-G_k CTRL-G <Up> 光标上移一行,回到开始插入时所在的列 i_CTRL-G_u CTRL-G u 开启新的可撤销更改序列 i_<BS> <BS> 删除光标前的字符 i_digraph {char1}<BS>{char2} 输入二合字母 (仅当 'digraph' 选项打开时才有效) i_CTRL-H CTRL-H<BS> i_<Tab> <Tab> 插入 <Tab> 字符 i_CTRL-I CTRL-I<Tab> i_<NL> <NL><CR> i_CTRL-J CTRL-J<CR> i_CTRL-K CTRL-K {char1} {char2} 输入二合字母 i_CTRL-L CTRL-L 'insertmode' 打开时: 退出插入模式 i_<CR> <CR> 开启新行 i_CTRL-M CTRL-M<CR> i_CTRL-N CTRL-N 查找光标前的关键字的后一个匹配项 i_CTRL-O CTRL-O 执行单个命令,然后回到插入模式 i_CTRL-P CTRL-P 查找光标前的关键字的前一个匹配项 i_CTRL-Q CTRL-QCTRL-V,但部分终端可能用于终端控制流 i_CTRL-SHIFT-Q CTRL-SHIFT-Q {char} 类似 CTRL-Q,除非 modifyOtherKeys 激活 i_CTRL-R CTRL-R {reg} 插入寄存器内容 i_CTRL-R_CTRL-O CTRL-R CTRL-O {reg} 按本义插入寄存器内容,且不自动缩进 i_CTRL-R_CTRL-P CTRL-R CTRL-P {reg} 按本义插入寄存器内容,并修正缩进 i_CTRL-R_CTRL-R CTRL-R CTRL-R {reg} 按本义插入寄存器内容 CTRL-S 不用,部分终端可能用于终端控制流 i_CTRL-T CTRL-T 当前行增加一层缩进 ('shiftwidth') i_CTRL-U CTRL-U 删除当前行本次输入的所有内容 i_CTRL-V CTRL-V {char} 按本义插入非数位字符、或特殊键的终端代码 i_CTRL-SHIFT-V CTRL-SHIFT-V {char} 类似 CTRL-V,除非 modifyOtherKeys 激活 i_CTRL-V_digit CTRL-V {number} 插入三位十进制数代表的单个字符 i_CTRL-W CTRL-W 删除光标前的单词 i_CTRL-X CTRL-X {mode} 进入 CTRL-X 子模式,见 i_CTRL-X_index i_CTRL-Y CTRL-Y 插入光标上方的字符 i_CTRL-Z CTRL-Z 'insertmode' 打开时: 暂停 Vim i_<Esc> <Esc> 'insertmode' 关闭时: 退出插入模式 i_CTRL-[ CTRL-[<Esc> i_CTRL-\_CTRL-G CTRL-\ CTRL-G 切换到 'insertmode' 指定的模式 i_CTRL-\_CTRL-N CTRL-\ CTRL-N 切换到普通模式 CTRL-\ a - z 预留给扩展用 CTRL-\ 其他 不用 i_CTRL-] CTRL-] 触发缩写 i_CTRL-^ CTRL-^ 切换是否启用 :lmap 映射 i_CTRL-_ CTRL-_ 切换语言,需打开 'allowrevins' (希伯来/波斯语) {仅当编译时加入 +rightleft 特性才有效} <Space> to '~' 不用,CTRL-D 之前的 '0' 和 '^' 除外 i_0_CTRL-D 0 CTRL-D 删除当前行所有缩进 i_^_CTRL-D ^ CTRL-D 删除当前行所有缩进,并在下一行恢复删除的缩进 i_<Del> <Del> 删除光标所在的字符 Meta 字符 (0x80 到 0xff,128 到 255) 不用 i_<Left> <Left> 光标左移一个字符 i_<S-Left> <S-Left> 光标左移一个单词 i_<C-Left> <C-Left> 光标左移一个单词 i_<Right> <Right> 光标右移一个字符 i_<S-Right> <S-Right> 光标右移一个单词 i_<C-Right> <C-Right> 光标右移一个单词 i_<Up> <Up> 光标上移一行 i_<S-Up> <S-Up><PageUp> i_<Down> <Down> 光标下移一行 i_<S-Down> <S-Down><PageDown> i_<Home> <Home> 光标移到行首 i_<C-Home> <C-Home> 光标移到文件开头 i_<End> <End> 光标移到行尾之后 i_<C-End> <C-End> 光标移到文件末尾之后 i_<PageUp> <PageUp> 上翻一屏 i_<PageDown> <PageDown> 下翻一屏 i_<F1> <F1><Help> i_<Help> <Help> 退出插入模式并显示帮助窗口 i_<Insert> <Insert> 在插入/替换模式间切换 i_<LeftMouse> <LeftMouse> 光标跳转到鼠标点击处 i_<ScrollWheelDown> <ScrollWheelDown> 窗口向下滚动三行 i_<S-ScrollWheelDown> <S-ScrollWheelDown> 窗口向下滚动一页 i_<ScrollWheelUp> <ScrollWheelUp> 窗口向上滚动三行 i_<S-ScrollWheelUp> <S-ScrollWheelUp> 窗口向上滚动一页 i_<ScrollWheelLeft> <ScrollWheelLeft> 窗口向左滚动六列 i_<S-ScrollWheelLeft> <S-ScrollWheelLeft> 窗口向左滚动一页 i_<ScrollWheelRight> <ScrollWheelRight> 窗口向右滚动六列 i_<S-ScrollWheelRight> <S-ScrollWheelRight> 窗口向右滚动一页 CTRL-X 子模式命令 i_CTRL-X_index i_CTRL-X_CTRL-D CTRL-X CTRL-D 宏定义补全 i_CTRL-X_CTRL-E CTRL-X CTRL-E 窗口向上滚动一行 i_CTRL-X_CTRL-F CTRL-X CTRL-F 文件名补全 i_CTRL-X_CTRL-I CTRL-X CTRL-I 标识符补全 i_CTRL-X_CTRL-K CTRL-X CTRL-K 词典词汇补全 i_CTRL-X_CTRL-L CTRL-X CTRL-L 整行内容补全 i_CTRL-X_CTRL-N CTRL-X CTRL-N 选择下一个补全项 i_CTRL-X_CTRL-O CTRL-X CTRL-O 全能 (omni) 补全 i_CTRL-X_CTRL-P CTRL-X CTRL-P 选择上一个补全项 i_CTRL-X_CTRL-R CTRL-X CTRL-R 寄存器内容补全 i_CTRL-X_CTRL-S CTRL-X CTRL-S 拼写建议补全 i_CTRL-X_CTRL-T CTRL-X CTRL-T 同义词补全 i_CTRL-X_CTRL-U CTRL-X CTRL-U 用自定义补全函数 'completefunc' 补全 i_CTRL-X_CTRL-V CTRL-X CTRL-V 模拟 : 命令行模式补全 i_CTRL-X_CTRL-Y CTRL-X CTRL-Y 窗口向下滚动一行 i_CTRL-X_CTRL-Z CTRL-X CTRL-Z 终止补全,保留原有文本 i_CTRL-X_CTRL-] CTRL-X CTRL-] 标签补全 i_CTRL-X_s CTRL-X s 拼写建议补全 补全模式的命令 (见 popupmenu-keys ) complete_CTRL-E CTRL-E 终止补全,保留原有文本 complete_CTRL-Y CTRL-Y 接受当前选中匹配项,结束补全 CTRL-L 从当前匹配项中获取下一个字符 <CR> 插入当前选中匹配项 <BS> 删除一个字符,并重新搜索补全项 CTRL-H<BS> <Up> 选择上一个匹配项 <Down> 选择下一个匹配项 <PageUp> 选择往前几个项目的匹配项 <PageDown> 选择往后几个项目的匹配项 其他 终止补全,插入当前键入的字符

2. 普通模式 normal-index

CHAR 任意非空白字符 WORD 连续空白字符序列 (字串) N 命令前输入的数值 {motion} 光标移动命令 Nmove {motion} 动作覆盖的文本 SECTION 将 '}' 开头的行算作小节,常规小节命令则会将 '{' 开头的行算作小节 备注: 1 = 光标移动命令;2 = 支持撤销/重做 标签 按键 备注 普通模式功能说明

CTRL-@ 不用 CTRL-A CTRL-A 2 将光标所在/后方的数值增加 (Add) N CTRL-B CTRL-B 1 向上 (反向,Backwards) 滚动 N 屏 CTRL-C CTRL-C 中断当前的 (搜索) 命令 CTRL-D CTRL-D 向下 (Downwards) 滚动 N 行 (缺省: 半屏) CTRL-E CTRL-E 向下滚动 N 行 (额外行可见,Extra) CTRL-F CTRL-F 1 向下 (正向,Forwards) 滚动 N 屏 CTRL-G CTRL-G 显示当前文件名和光标位置 (状况,Going on) <BS> <BS> 1 同 "h" CTRL-H CTRL-H 1 同 "h" <Tab> <Tab> 1 跳转到跳转表里第 N 个较新的光标位置 CTRL-I CTRL-I 1 同 <Tab> (跳进,In) <NL> <NL> 1 同 "j" <S-NL> <S-NL> 1 同 CTRL-F CTRL-J CTRL-J 1 同 "j" CTRL-K 不用 CTRL-L CTRL-L 重绘屏幕 (新面貌,Look) <CR> <CR> 1 光标下移 N 行,停在首个 CHAR 上 <S-CR> <S-CR> 1 同 CTRL-F CTRL-M CTRL-M 1 同 <CR> CTRL-N CTRL-N 1 同 "j" (下一行,Next) CTRL-O CTRL-O 1 跳转到跳转表里第 N 个较旧的项目 (跳出,Out) CTRL-P CTRL-P 1 同 "k" (上一行,Previous) CTRL-Q 不用,部分终端用于终端控制流 CTRL-R CTRL-R 2 重做 (Redo) 被 "u" 撤销的更改 CTRL-S 不用,部分终端用于终端控制流 CTRL-T CTRL-T 跳到标签栈上第 N 个较早的标签 (Tag) CTRL-U CTRL-U 向上 (Upwards) 滚动 N 行 (缺省: 半屏) CTRL-V CTRL-V 进入列块可视 (Visual) 模式 CTRL-W CTRL-W {char} 窗口 (Window) 相关命令,见 CTRL-W CTRL-X CTRL-X 2 将光标所在/后方的数值减去 (X-out) N CTRL-Y CTRL-Y 向上滚动 N 行 (过去行可见,Yester-line) CTRL-Z CTRL-Z 挂起程序 (或启动新外壳) CTRL-[ <Esc> 不用 CTRL-\_CTRL-N CTRL-\ CTRL-N 切换到普通 (Normal) 模式 (空动作) CTRL-\_CTRL-G CTRL-\ CTRL-G 切换到 'insertmode' 指定的模式 CTRL-\ a - z 预留作扩展用 CTRL-\ 其他按键 不用 CTRL-] CTRL-] 跳转到 (":ta") 光标所在关键字标签的定义 CTRL-^ CTRL-^ 编辑第 N 个轮换文件 (同 `:e #N`) CTRL-_ 不用 <Space> <Space> 1 同 "l" ! !{motion}{filter} 2 用 {filter} 命令过滤 Nmove 文本 !! !!{filter} 2 用 {filter} 命令过滤 N 行 quote "{reg} 为后续删除、抽出或放置操作指定 {reg} 寄存器 ({.%#:} 只能用于放置) # # 1 反向搜索光标所在关键字的第 N 次出现 $ $ 1 光标下移 N-1 行,停在行尾之后 % % 1 在当前行查找 (小/中/大) 括号,并跳转到对应 匹配括号,也可用于注释起止标记,或 C 预处理 条件宏的匹配 N% {count}% 1 跳转到文件对应百分之 N 的位置 & & 2 重复前次替代 :s 命令 ' '{a-zA-Z0-9} 1 跳转到位置标记 {a-zA-Z0-9} 所在行首个 CHAR '' '' 1 跳转到最近一次跳转之前所在行的首个 CHAR '( '( 1 跳转到当前句子起始行的首个 CHAR ') ') 1 跳转到当前句子结束行的首个 CHAR '< '< 1 跳到当前缓冲区最近高亮选区起始行的首个 CHAR '> '> 1 跳到当前缓冲区最近高亮选区结束行的首个 CHAR '[ '[ 1 跳转到最近修改/放置文本起始行的首个 CHAR '] '] 1 跳转到最近修改/放置文本结束行的首个 CHAR '{ '{ 1 跳转到当前段落起始行的首个 CHAR '} '} 1 跳转到当前段落结束行的首个 CHAR ( ( 1 光标回退 N 个句子 ) ) 1 光标前移 N 个句子 star * 1 正向搜索光标所在关键字的第 N 次出现 + + 1 同 <CR> <S-Plus> <S-+> 1 同 CTRL-F , , 1 反向重复最近的 f、t、F 或 T 命令 N 次 - - 1 光标上移 N 行,停在首个 CHAR 上 <S-Minus> <S--> 1 同 CTRL-B . . 2 重复上次更改,N 给出时覆盖原始计数 / /{pattern}<CR> 1 正向搜索 {pattern} 的第 N 次匹配 /<CR> /<CR> 1 正向重复最近一次搜索 0 0 1 光标移动到当前行的首字符 count 1 附加于命令前,作为执行次数 count 2 " count 3 " count 4 " count 5 " count 6 " count 7 " count 8 " count 9 " : : 1 进入 Ex 命令模式 N: {count}: 进入 Ex 命令模式并用当前行开始 N 行作为范围 ; ; 1 正向重复最近的 f、t、F 或 T 命令 N 次 < <{motion} 2 将 Nmove 文本左移 'shiftwidth'<< << 2 将 N 行文本左移 'shiftwidth'= ={motion} 2 自动缩进 ("indent" 作为备用) Nmove 文本 == == 2 自动缩进 ("indent" 作为备用) N 行文本 > >{motion} 2 将 Nmove 文本右移 'shiftwidth'>> >> 2 将 N 行文本右移 'shiftwidth'? ?{pattern}<CR> 1 反向搜索 {pattern} 的第 N 次匹配 ?<CR> ?<CR> 1 反向重复最近一次搜索 @ @{a-z} 2 重复执行 {a-z} 寄存器的内容 N 次 @: @: 重复执行上次的 ":" 命令 N 次 @@ @@ 2 重复执行上次的 @{a-z} 命令 N 次 A A 2 在行尾追加文本,重复 N 次 B B 1 光标回退 N 个 WORD C ["x]C 2 删到行尾及后续 N-1 行,开始插入;同 "c$" D ["x]D 2 删到行尾及后续 N-1 行 [到寄存器 x];同 "d$" E E 1 光标前移到第 N 个 WORD 的结束处 F F{char} 1 反向搜索 (Find) {char} 的第 N 次出现 G G 1 跳转到第 N 行,缺省是末行 H H 1 跳转到屏幕顶部 (Home) 起算的第 N 行 I I 2 在本行首个 CHAR 之前插入文本 N 次 J J 2 合并 (Join) N 行内容;缺省为 2 K K 用 'keywordprg' 查阅光标处关键字 (Keyword) L L 1 跳转到屏幕底部 (Last) 起算的第 N 行 M M 1 跳转到屏幕中间 (Middle) 行 N N 1 反向重复最近的 '/' 或 '?' 搜索 N 次 O O 2 在光标上方开启新行并插入文本,重复 N 次 P ["x]P 2 在光标之前放置 [来自寄存器 x 的] 文本 N 次 Q Q 切换到 "Ex" 模式 R R 2 替换模式: 覆盖原字符,输入文本再重复 N-1 次 S ["x]S 2 删除 N 行 [到寄存器 x],开始输入;同 "cc" T T{char} 1 反向搜索 {char} 的第 N 次出现并右移一个字符 U U 2 撤销最近修改行内所有最近的修改 V V 进入行可视 (Visual) 模式 W W 1 光标前移 N 个 WORD X ["x]X 2 删除光标前 N 个字符 [到寄存器 x] Y ["x]Y 抽出 N 行 [到寄存器 x];同 "yy" ZZ ZZ 缓冲区已修改则先保存,随后关闭窗口 ZQ ZQ 不保存文件,直接关闭窗口 [ [{char} 方括号系列命令 (见下 [ ) \ 不用 ] ]{char} 方括号系列命令 (见下 ] ) ^ ^ 1 光标移动到当前行的首个 CHAR _ _ 1 光标下移 N-1 行,停在首个 CHAR 上 ` `{a-zA-Z0-9} 1 跳转到位置标记 {a-zA-Z0-9} `( `( 1 跳转到当前句子的开始处 `) `) 1 跳转到当前句子的结束处 `< `< 1 跳转到高亮选区的开始处 `> `> 1 跳转到高亮选区的结束处 `[ `[ 1 跳转到最近修改/放置文本的开始处 `] `] 1 跳转到最近修改/放置文本的结束处 `` `` 1 跳转到最近一次跳转之前的位置 `{ `{ 1 跳转到当前段落的开始处 `} `} 1 跳转到当前段落的结束处 a a 2 在光标后追加文本,重复 N 次 b b 1 光标回退 N 个单词 c ["x]c{motion} 2 删除 Nmove 文本 [到寄存器 x] 并进入插入模式 cc ["x]cc 2 删除 N 行 [到寄存器 x] 并进入插入模式 d ["x]d{motion} 2 删除 Nmove 文本 [到寄存器 x] dd ["x]dd 2 删除 N 行 [到寄存器 x] do do 2 同 ":diffget" dp dp 2 同 ":diffput" e e 1 光标前移到第 N 个单词的结束处 f f{char} 1 正向搜索 (find) {char} 的第 N 次出现 g g{char} 扩展命令,见下 g h h 1 光标左移 N 个字符 i i 2 在光标前插入文本,重复 N 次 j j 1 光标下移 N 行 k k 1 光标上移 N 行 l l 1 光标右移 N 个字符 m m{A-Za-z} 在光标位置处设置位置标记 {A-Za-z} n n 1 正向重复最近的 '/' 或 '?' 搜索 N 次 o o 2 在光标下方开启新行并插入文本,重复 N 次 p ["x]p 2 在光标后放置 [来自寄存器 x 的] 文本 N 次 q q{0-9a-zA-Z"} 录制键序列到寄存器 {0-9a-zA-Z"} (大写追加) q q (录制状态下) 停止录制 q: q: 在命令行窗口编辑 : 命令行 q/ q/ 在命令行窗口编辑 / 命令行 q? q? 在命令行窗口编辑 ? 命令行 r r{char} 2 将 N 个字符替换为 {char} s ["x]s 2 删除 N 个字符 [到寄存器 x] 并进入插入模式 t t{char} 1 正向搜索 {char} 的第 N 次出现并左移一个字符 u u 2 撤销更改 v v 进入字符可视 (visual) 模式 w w 1 光标前移 N 个单词 x ["x]x 2 删除光标及后方 N 个字符 [到寄存器 x] y ["x]y{motion} 抽出 Nmove 文本 [到寄存器 x] yy ["x]yy 抽出 N 行 [到寄存器 x] z z{char} 'z' 系列命令,见下 z { { 1 光标回退 N 个段落 bar | 1 光标移动到第 N 列 } } 1 光标前移 N 个段落 ~ ~ 2 'tildeop' 关闭时: 切换光标及后方 N 个字符的 大小写,光标同步右移 N 个字符 ~ ~{motion} 'tildeop' 打开时: 切换 Nmove 文本的大小写 <C-End> <C-End> 1 同 "G" <C-Home> <C-Home> 1 同 "gg" <C-Left> <C-Left> 1 同 "b" <C-LeftMouse> <C-LeftMouse> 跳转到 (":ta") 鼠标点击所在关键字标签的定义 <C-Right> <C-Right> 1 同 "w" <C-RightMouse> <C-RightMouse> 同 "CTRL-T" <C-Tab> <C-Tab> 同 "g<Tab>" <Del> ["x]<Del> 2 同 "x" N<Del> {count}<Del> 删除 {count} 数值最后一位 <Down> <Down> 1 同 "j" <End> <End> 1 同 "$" <F1> <F1><Help> <Help> <Help> 打开帮助窗口 <Home> <Home> 1 同 "0" <Insert> <Insert> 2 同 "i" <Left> <Left> 1 同 "h" <LeftMouse> <LeftMouse> 1 光标移动到鼠标点击位置 <MiddleMouse> <MiddleMouse> 2 在鼠标点击位置前放置文本 (相当于 "gP") <PageDown> <PageDown>CTRL-F <PageUp> <PageUp>CTRL-B <Right> <Right> 1 同 "l" <RightMouse> <RightMouse> 进入可视模式,设置或扩展选区到鼠标点击位置 <S-Down> <S-Down> 1 同 CTRL-F <S-Left> <S-Left> 1 同 "b" <S-LeftMouse> <S-LeftMouse> 正向搜索鼠标点击位置所在关键字 (相当于 "*") <S-Right> <S-Right> 1 同 "w" <S-RightMouse> <S-RightMouse> 反向搜索鼠标点击位置所在关键字 (相当于 "#") <S-Up> <S-Up> 1 同 CTRL-B <Undo> <Undo> 2 同 "u" <Up> <Up> 1 同 "k" <ScrollWheelDown> <ScrollWheelDown> 窗口向下滚动三行 <S-ScrollWheelDown> <S-ScrollWheelDown> 窗口向下滚动完整一页 <ScrollWheelUp> <ScrollWheelUp> 窗口向上滚动三行 <S-ScrollWheelUp> <S-ScrollWheelUp> 窗口向上滚动完整一页 <ScrollWheelLeft> <ScrollWheelLeft> 窗口向左滚动六列 <S-ScrollWheelLeft> <S-ScrollWheelLeft> 窗口向左滚动完整一页 <ScrollWheelRight> <ScrollWheelRight> 窗口向右滚动六列 <S-ScrollWheelRight> <S-ScrollWheelRight> 窗口向右滚动完整一页

2.1 文本对象 objects

可配合操作符使用 (用于操作符之后),或在可视模式下选取文本范围。 标签 命令 操作符等待和可视模式功能说明

v_aquote a" 双引号字符串 v_a' a' 单引号字符串 v_a( a( 同 ab v_a) a) 同 ab v_a< a< "一个 <> 块": '<' 到 '>' 整块 (含尖括号) v_a> a> 同 a< v_aB aB "一个大块": "{" 到 "}" 整块 (含花括号) v_aW aW "一个字串" (含前后空白) v_a[ a[ "一个 [] 块": '[' 到 ']' 整块 (含中括号) v_a] a] 同 a[ v_a` a` 反引号字符串 v_ab ab "一个块": "(" 到 ")" 整块 (含小括号) v_ap ap "一个段落" (含前后空白) v_as as "一个句子" (含前后空白) v_at at "一个标签块" (含前后空白) v_aw aw "一个单词" (含前后空白) v_a{ a{ 同 aB v_a} a} 同 aB v_iquote i" 双引号字符串,不含双引号 v_i' i' 单引号字符串,不含单引号 v_i( i( 同 ib v_i) i) 同 ib v_i< i< "内含 <> 块": '<' 到 '>' 内部文本 v_i> i> 同 i< v_iB iB "内含大块": "{" 到 "}" 内部文本 v_iW iW "内含字串" v_i[ i[ "内含 [] 块": '[' 到 ']' 内部文本 v_i] i] 同 i[ v_i` i` 反引号字符串,不含反引号 v_ib ib "内含块": "(" 到 ")" 内部文本 v_ip ip "内含段落" v_is is "内含句子" v_it it "内含标签块" v_iw iw "内含单词" v_i{ i{ 同 iB v_i} i} 同 iB

2.2 窗口命令 CTRL-W

标签 命令 普通模式功能说明

CTRL-W_CTRL-B CTRL-W CTRL-B 同 "CTRL-W b" CTRL-W_CTRL-C CTRL-W CTRL-C 空操作 CTRL-W_CTRL-D CTRL-W CTRL-D 同 "CTRL-W d" CTRL-W_CTRL-F CTRL-W CTRL-F 同 "CTRL-W f" CTRL-W CTRL-G 同 "CTRL-W g .." CTRL-W_CTRL-H CTRL-W CTRL-H 同 "CTRL-W h" CTRL-W_CTRL-I CTRL-W CTRL-I 同 "CTRL-W i" CTRL-W_CTRL-J CTRL-W CTRL-J 同 "CTRL-W j" CTRL-W_CTRL-K CTRL-W CTRL-K 同 "CTRL-W k" CTRL-W_CTRL-L CTRL-W CTRL-L 同 "CTRL-W l" CTRL-W_CTRL-N CTRL-W CTRL-N 同 "CTRL-W n" CTRL-W_CTRL-O CTRL-W CTRL-O 同 "CTRL-W o" CTRL-W_CTRL-P CTRL-W CTRL-P 同 "CTRL-W p" CTRL-W_CTRL-Q CTRL-W CTRL-Q 同 "CTRL-W q" CTRL-W_CTRL-R CTRL-W CTRL-R 同 "CTRL-W r" CTRL-W_CTRL-S CTRL-W CTRL-S 同 "CTRL-W s" CTRL-W_CTRL-T CTRL-W CTRL-T 同 "CTRL-W t" CTRL-W_CTRL-V CTRL-W CTRL-V 同 "CTRL-W v" CTRL-W_CTRL-W CTRL-W CTRL-W 同 "CTRL-W w" CTRL-W_CTRL-X CTRL-W CTRL-X 同 "CTRL-W x" CTRL-W_CTRL-Z CTRL-W CTRL-Z 同 "CTRL-W z" CTRL-W_CTRL-] CTRL-W CTRL-] 同 "CTRL-W ]" CTRL-W_CTRL-^ CTRL-W CTRL-^ 同 "CTRL-W ^" CTRL-W_CTRL-_ CTRL-W CTRL-_ 同 "CTRL-W _" CTRL-W_+ CTRL-W + 增加当前窗口高度 N 行 CTRL-W_- CTRL-W - 减少当前窗口高度 N 行 CTRL-W_: CTRL-W : 同 : ,编辑命令行 CTRL-W_< CTRL-W < 减少当前窗口宽度 N 列 CTRL-W_= CTRL-W = 统一所有窗口的宽高 CTRL-W_> CTRL-W > 增加当前窗口宽度 N 列 CTRL-W_H CTRL-W H 将当前窗口移到最左侧 CTRL-W_J CTRL-W J 将当前窗口移到最底部 CTRL-W_K CTRL-W K 将当前窗口移到最顶部 CTRL-W_L CTRL-W L 将当前窗口移到最右侧 CTRL-W_P CTRL-W P 切换到预览窗口 CTRL-W_R CTRL-W R 向上旋转窗口 N 次 CTRL-W_S CTRL-W S 同 "CTRL-W s" CTRL-W_T CTRL-W T 将当前窗口移到新标签页上打开 CTRL-W_W CTRL-W W 切换到前 N 个窗口 (循环切换) CTRL-W_] CTRL-W ] 分割窗口,新窗口跳转到光标所在标签的定义 CTRL-W_^ CTRL-W ^ 分割窗口,新窗口打开轮换文件或第 N 号缓冲区 CTRL-W__ CTRL-W _ 将当前窗口高度设为 N 行 (缺省: 尽量大) CTRL-W_b CTRL-W b 切换到底部窗口 CTRL-W_c CTRL-W c 关闭当前窗口 (同 :close ) CTRL-W_d CTRL-W d 分割窗口跳至匹配光标下标识符的首个 'define' CTRL-W_f CTRL-W f 分割窗口,新窗口跳转到光标指向的文件 CTRL-W_F CTRL-W F 分割窗口编辑光标下文件,并跳至其后指定行号 CTRL-W_g_CTRL-] CTRL-W g CTRL-] 分割窗口,在光标所在标签上执行 :tjump CTRL-W_g] CTRL-W g ] 分割窗口,在光标所在标签上执行 :tselect CTRL-W_g} CTRL-W g } 在光标所在标签上执行 :ptjump CTRL-W_gf CTRL-W g f 在新标签页编辑光标指向的文件 CTRL-W_gF CTRL-W g F 在新标签页编辑光标下文件,并跳至其后行号 CTRL-W_gt CTRL-W g t 同 gt : 切换到下一个标签页 CTRL-W_gT CTRL-W g T 同 gT : 切换到上一个标签页 CTRL-W_g<Tab> CTRL-W g <Tab>g<Tab> : 切换到最近访问的标签页 CTRL-W_h CTRL-W h 切换到左方第 N 个窗口 (到达首窗口后停止) CTRL-W_i CTRL-W i 分割窗口并跳转到光标所在关键字的声明位置 CTRL-W_j CTRL-W j 切换到下方第 N 个窗口 (到达末窗口后停止) CTRL-W_k CTRL-W k 切换到上方第 N 个窗口 (到达首窗口后停止) CTRL-W_l CTRL-W l 切换到右方第 N 个窗口 (到达末窗口后停止) CTRL-W_n CTRL-W n 新建 N 行高的窗口 CTRL-W_o CTRL-W o 仅保留当前窗口,关闭其他窗口 (同 :only ) CTRL-W_p CTRL-W p 跳转到上次访问的 (previous) 窗口 CTRL-W_q CTRL-W q 退出当前窗口 (同 :quit ) CTRL-W_r CTRL-W r 向下旋转窗口 N 次 CTRL-W_s CTRL-W s 水平分割当前窗口,新窗口高度设为 N 行 CTRL-W_t CTRL-W t 切换到顶部窗口 CTRL-W_v CTRL-W v 垂直分割当前窗口,新窗口宽度设为 N 列 CTRL-W_w CTRL-W w 切换到后 N 个窗口 (循环切换) CTRL-W_x CTRL-W x 当前窗口与第 N 号窗口 (缺省下一个窗口) 互换 CTRL-W_z CTRL-W z 关闭预览窗口 CTRL-W_bar CTRL-W | 设置当前窗口宽度为 N 列 CTRL-W_} CTRL-W } 在预览窗口里显示光标所在标签的定义 CTRL-W_<Down> CTRL-W <Down> 同 "CTRL-W j" CTRL-W_<Up> CTRL-W <Up> 同 "CTRL-W k" CTRL-W_<Left> CTRL-W <Left> 同 "CTRL-W h" CTRL-W_<Right> CTRL-W <Right> 同 "CTRL-W l"

2.3 方括号命令 [ ]

3 = 搜索当前及其包含文件,从当前文件头开始 4 = 搜索当前及其包含文件,从光标位置开始 标签 按键 备注 普通模式功能说明

[_CTRL-D [ CTRL-D 3 跳至匹配光标下标识符的首个 'define' [_CTRL-I [ CTRL-I 3 跳至匹配光标下关键字的首行 [# [# 1 反向搜索 N 个未匹配的 #if、#else 或 #ifdef [' [' 1 反向跳转 N 个小写位置标记所在行的首个 CHAR [( [( 1 反向搜索 N 个未匹配的 '(' [star [* 1 同 "[/" [` [` 1 反向跳转 N 个小写位置标记 [/ [/ 1 反向搜索 N 个 C 注释起始位置 [D [D 3 列出匹配光标下标识符的所有 'define' [I [I 3 列出匹配光标下关键字的所有行 [P [P 2 同 "[p" [[ [[ 1 光标回退 N 个小节 [] [] 1 光标回退 N 个 SECTION [c [c 1 光标回退 N 个更改的起始位置 [d [d 3 显示匹配光标下标识符的首个 'define' [f [f 同 "gf" [i [i 3 显示匹配光标下关键字的首行 [m [m 1 反向搜索 N 个成员函数的起始位置 [p [p 2 类似 "P",但放置后自动适配当前行缩进 [s [s 1 反向搜索 N 个错误拼写单词 [z [z 1 反向跳转 N 个折叠的起始位置 [{ [{ 1 反射搜索 N 个未匹配的 '{' [<MiddleMouse> [<MiddleMouse> 2 同 "[p" ]_CTRL-D ] CTRL-D 4 跳至匹配光标下标识符的首个 'define' ]_CTRL-I ] CTRL-I 4 跳至匹配光标下关键字的首行 ]# ]# 1 正向搜索 N 个未匹配的 #endif 或 #else ]' ]' 1 正向跳转 N 个小写位置标记所在行的首个 CHAR ]) ]) 1 正向搜索 N 个未匹配的 ')' ]star ]* 1 同 "]/" ]` ]` 1 正向跳转 N 个小写位置标记 ]/ ]/ 1 正向搜索 N 个 C 注释结束位置 ]D ]D 4 列出匹配光标下标识符的所有 'define' ]I ]I 4 列出匹配光标下关键字的所有行 ]P ]P 2 同 "[p" ][ ][ 1 光标前移 N 个小节 ]] ]] 1 光标前移 N 个 SECTION ]c ]c 1 光标前移 N 个更改的起始位置 ]d ]d 4 显示匹配光标下标识符的首个 'define' ]f ]f 同 "gf" ]i ]i 4 显示匹配光标下关键字的首行 ]m ]m 1 正向搜索 N 个成员函数的结束位置 ]p ]p 2 类似 "p",但放置后自动适配当前行缩进 ]s ]s 1 正向搜索 N 个错误拼写单词 ]z ]z 1 正向跳转 N 个打开折叠的结束位置 ]} ]} 1 光标搜索 N 个未匹配的 '}' ]<MiddleMouse> ]<MiddleMouse> 2 同 "]p"

2.4 'g' 系列命令 g

标签 按键 备注 普通模式功能说明

g_CTRL-A g CTRL-A 仅当编译时带 MEM_PROFILE: 输出内存分析报告 g_CTRL-G g CTRL-G 显示当前光标位置信息 g_CTRL-H g CTRL-H 进入列块选择模式 g_CTRL-] g CTRL-] :tjump 到光标所在关键字标签的定义 g# g# 1 类似 # ,但不限制单词边界 "\<" 和 "\>" g$ g$ 1 'wrap' 关闭时,跳到当前行最右侧屏幕可见字符 'wrap' 打开时,跳到当前屏幕行最右侧字符 g& g& 2 在所有行上重复执行最近的替代 (":s") 命令 g' g'{mark} 1 类似 ' ,转位置标记行首,但不更改跳转表 g` g`{mark} 1 类似 ` ,转位置标记,但不更改跳转表 gstar g* 1 类似 "*",但不限制单词边界 "\<" 和 "\>" g+ g+ 切换到第 N 个较新的文本状态 g, g, 1 跳转到改变表第 N 个较新的位置 g- g- 切换到第 N 个较旧的文本状态 g0 g0 1 'wrap' 关闭时,跳到当前行最左侧屏幕可见字符 'wrap' 打开时,跳到当前屏幕行最左侧字符 g8 g8 显示光标所在 UTF-8 字符的十六进制字节值 g; g; 1 跳转到改变表第 N 个较旧的位置 g< g< 显示上一条命令的执行输出 g? g? 2 Rot13 编码操作符 g?g? g?? 2 对当前行执行 Rot13 编码 g?g? g?g? 2 同上 gD gD 1 跳转到光标下关键字的全局声明位置 gE gE 1 光标回退到第 N 个 WORD 的结束处 gF gF 编辑光标指向的文件,并跳至其后指定行号 gH gH 进入行选择模式 gI gI 2 类似 "I",但固定在第一列开始插入 gJ gJ 2 合并行,且不添加空格 gM gM 1 跳转到当前文本行正中间位置 gN gN 1,2 反向搜索前次搜索模式,可视选中匹配项 gP ["x]gP 2 光标前放置 [寄存器 x] 文本 N 次并右移一字符 gQ gQ 进入 Vim 风格可编辑的 "Ex" 模式 gR gR 2 进入虚拟替换模式 gT gT 切换到上一个标签页 gU gU{motion} 2 将 Nmove 文本全部转为大写 gV gV 执行选择模式映射或菜单后,不重选原选区 g] g] :tselect 光标所在关键字标签的定义 g^ g^ 1 'wrap' 关闭时,跳到当前行屏幕最左侧 CHAR 'wrap' 打开时,跳到当前屏幕行最左侧 CHAR g_ g_ 1 光标下移 N-1 行,停在末 CHAR 上 ga ga 显示光标所在字符的 ASCII 值 gd gd 1 跳转到当前函数内光标下关键字的局部声明 ge ge 1 光标回退到第 N 个单词的结束处 gf gf 编辑光标指向的文件 gg gg 1 跳转到第 N 行,缺省是首行 gh gh 进入字符选择模式 gi gi 2 类似 "i",但先跳转到 '^ 位置标记再插入 gj gj 1 类似 "j",但 'wrap' 打开时下移 N 屏幕行 gk gk 1 类似 "k",但 'wrap' 打开时上移 N 屏幕行 gm gm 1 跳转到当前屏幕行正中间位置 gn gn 1,2 正向搜索前次搜索模式,可视选中匹配项 go go 1 跳转到缓冲区的第 N 个字节位置 gp ["x]gp 2 光标后放置 [寄存器 x] 文本 N 次并右移一字符 gq gq{motion} 2 自动排版 Nmove 文本 gr gr{char} 2 将 N 个虚拟字符替换为 {char} gs gs 暂停 (休眠) N 秒 (缺省为 1) gt gt 切换到下一个标签页 gu gu{motion} 2 将 Nmove 文本全部转为小写 gv gv 重新选中上次使用的可视选区 gw gw{motion} 2 排版 Nmove 文本后,光标恢复原位 g@ g@{motion} 对 Nmove 文本调用 'operatorfunc' 自定义操作 g~ g~{motion} 2 切换 Nmove 文本的大小写 g<Down> g<Down> 1 同 "gj" g<End> g<End> 1 类似 "g$",但跳到最右侧 CHAR 而非字符 g<Home> g<Home> 1 同 "g0" g<LeftMouse> g<LeftMouse><C-LeftMouse> g<MiddleMouse><C-MiddleMouse> g<RightMouse> g<RightMouse><C-RightMouse> g<Tab> g<Tab> 切换到最近访问过的标签页 g<Up> g<Up> 1 同 "gk"

2.5 'z' 系列命令 z

标签 按键 备注 普通模式功能说明

z<CR> z<CR> 重绘,置顶光标或第 N 行并跳到该行首个 CHAR zN<CR> z{height}<CR> 重绘,将窗口高度设为 {height}z+ z+ 类似 "z<CR>",但置顶窗口下方一行而非光标行 z- z- 重绘,置底光标或第 N 行并跳到该行首个 CHAR z. z. 重绘,居中光标或第 N 行并跳到该行首个 CHAR z= z= 给出拼写修正建议 zA zA 递归展开已关闭折叠或递归关闭打开折叠 zC zC 递归关闭当前折叠 zD zD 递归删除当前折叠 zE zE 清空所有折叠 zF zF 为 N 行创建折叠 zG zG 临时将光标所在单词标记为拼写正确 (good) zH zH 'wrap' 关闭时,向右滚动半屏 zL zL 'wrap' 关闭时,向左滚动半屏 zM zM 将折叠级别 'foldlevel' 设为零,关闭所有折叠 zN zN 置位 'foldenable',开启正常 (Normal) 折叠 zO zO 递归展开当前折叠 zR zR 'foldlevel' 设为最大折叠级别,展开所有折叠 zW zW 临时将光标所在单词标记为拼写错误 (wrong) zX zX 重新应用 'foldlevel',撤销手动折叠开关设置 z^ z^ 类似 "z-",但置底窗口上方一行而非光标行 za za 展开已关闭当前折叠或关闭打开的当前折叠一层 zb zb 类似 "z-",但保留当前列不变 zc zc 关闭当前折叠一层 zd zd 删除当前折叠一层 ze ze 'wrap' 关闭时,水平滚动使光标位于屏幕最右侧 zf zf{motion} 为 Nmove 文本创建折叠 zg zg 永久将光标所在单词标记为拼写正确 (good) zh zh 'wrap' 关闭时,水平右滚文本 N 个字符 zi zi 翻转 (invert) 'foldenable',切换折叠开关 zj zj 1 正向跳转 N 个折叠的起始位置,包括已关闭折叠 zk zk 1 反向跳转 N 个折叠的结束位置,包括已关闭折叠 zl zl 'wrap' 关闭时,水平左滚文本 N 个字符 zm zm 'foldlevel' 折叠级别减一,折起更多 (more) zn zn 复位 'foldenable',不 (none) 折叠 zo zo 展开当前折叠一层 zp zp 列块模式下粘贴,不为矩形对齐而补全尾部空白 zP zP 列块模式下粘贴,不为矩形对齐而补全尾部空白 zr zr 'foldlevel' 折叠级别加一 zs zs 'wrap' 关闭时,水平滚动使光标位于屏幕最左侧 zt zt 类似 "z<CR>",但保留当前列不变 zuG zuG 撤销 zG ,删除临时好词 zuW zuW 撤销 zW ,删除临时坏词 zug zug 撤销 zg ,删除永久好词 zuw zuw 撤销 zw ,删除永久坏词 zw zw 永久将光标所在单词标记为拼写错误 (wrong) zv zv 仅展开必要折叠,使当前行完整可查看 (view) zx zx 重新应用 'foldlevel' 然后用 "zv" 查看当前行 zy zy{motion} 抽出 Nmove 文本,不会抽出列块末尾多余的空白 zz zz 类似 "z.",但保留当前列不变 z<Left> z<Left> 同 "zh" z<Right> z<Right> 同 "zl" 2.6 操作符等待模式 operator-pending-index 它们在操作符后但在键入 {motion} 之前使用。 标签 按键 操作符等待模式功能说明

o_v v 强制操作符面向字符 o_V V 强制操作符面向行 o_CTRL-V CTRL-V 强制操作符面向列块

3. 可视模式 visual-index

大部分可视模式命令与普通模式一致。下表列出有差异的命令清单。 标签 按键 备注 可视模式功能说明

v_CTRL-A CTRL-A 2 将高亮文本的数值统一增加 (Add) N v_CTRL-C CTRL-C 结束可视模式 v_CTRL-G CTRL-G 在可视模式和选择模式间切换 v_<BS> ["x]<BS> 2 选择模式: 删除高亮区域 [到寄存器 x] v_CTRL-H ["x]CTRL-H 2 同 <BS> v_CTRL-O CTRL-O 选择模式: 执行下条命令时临时切换到可视模式 v_CTRL-V CTRL-V 进入列块可视模式,已在该模式时退出可视模式 v_CTRL-X CTRL-X 2 将高亮文本的数值统一减去 (X-out) N v_<Esc> <Esc> 结束可视模式 v_CTRL-\_CTRL-N CTRL-\ CTRL-N 结束可视模式 v_CTRL-\_CTRL-G CTRL-\ CTRL-G 切换到 'insertmode' 指定的模式 v_CTRL-] CTRL-] 跳转到 (":ta") 高亮标签的定义 v_! !{filter} 2 用外部命令 {filter} 过滤高亮行 v_: : 进入命令行,并自动指定高亮区域作为行范围 v_< < 2 将高亮行左移 N * 'shiftwidth'v_= = 2 自动缩进 ("indent" 作为备用) 高亮行 v_> > 2 将高亮行右移 N * 'shiftwidth'v_b_A A 2 列块模式: 所有高亮行在选区后追加相同文本 v_C ["x]C 2 删除高亮行 [到寄存器 x],然后开始插入 v_D ["x]D 2 删除高亮行 [到寄存器 x] v_b_I I 2 列块模式: 所有高亮行在选区前插入相同文本 v_J J 2 合并高亮行 (自动插入空格) v_K K 用 'keywordprg' 查阅高亮关键字 v_O O 跳到高亮区域对角或 (列块) 水平方向的另一角 v_P ["x]P 用寄存器内容替换高亮区域;不覆盖无名寄存器 Q 不切换到 Ex 模式,报错 ('belloff' "ex" 项) v_R ["x]R 2 删除高亮行 [到寄存器 x],然后开始插入 v_S ["x]S 2 删除高亮行 [到寄存器 x],然后开始插入 v_U U 2 将高亮区域全部转为大写 (可视模式下同 "gU") v_V V 进入行可视模式,已在该模式时退出可视模式 v_X ["x]X 2 删除高亮行 [到寄存器 x] v_Y ["x]Y 抽出高亮行 [到寄存器 x] v_aquote a" 扩展高亮区域,使包含 "一个双引号字符串" v_a' a' 扩展高亮区域,使包含 "一个单引号字符串" v_a( a( 同 ab v_a) a) 同 ab v_a< a< 扩展高亮区域,使包含 "一个 <> 块" v_a> a> 同 a< v_aB aB 扩展高亮区域,使包含 "一个大块" ({} 块) v_aW aW 扩展高亮区域,使包含 "一个 WORD" v_a[ a[ 扩展高亮区域,使包含 "一个 [] 块" v_a] a] 同 a[ v_a` a` 扩展高亮区域,使包含 "一个反引号字符串" v_ab ab 扩展高亮区域,使包含 "一个块" (() 块) v_ap ap 扩展高亮区域,使包含 "一个段落" v_as as 扩展高亮区域,使包含 "一个句子" v_at at 扩展高亮区域,使包含 "一个标签块" v_aw aw 扩展高亮区域,使包含 "一个单词" v_a{ a{ 同 aB v_a} a} 同 aB v_c ["x]c 2 删除高亮文本 [到寄存器 x],然后开始插入 v_d ["x]d 2 删除高亮文本 [到寄存器 x] v_g_CTRL-A g CTRL-A 2 将高亮文本的数值按 N 步长逐行递增 v_g_CTRL-X g CTRL-X 2 将高亮文本的数值按 N 步长逐行递减 v_gJ gJ 2 合并高亮行,不自动插入空格 v_gq gq 2 自动排版高亮行 v_gv gv 互换当前和上一次的高亮区域 v_iquote i" 扩展高亮区域,使包含双引号字符串 (不含引号) v_i' i' 扩展高亮区域,使包含单引号字符串 (不含引号) v_i( i( 同 ib v_i) i) 同 ib v_i< i< 扩展高亮区域,使包含 "内含 <> 块" v_i> i> 同 i< v_iB iB 扩展高亮区域,使包含 "内含大块" ({} 块) v_iW iW 扩展高亮区域,使包含 "内含 WORD" v_i[ i[ 扩展高亮区域,使包含 "内含 [] 块" v_i] i] 同 i[ v_i` i` 扩展高亮区域,使包含反引号字符串 (无反引号) v_ib ib 扩展高亮区域,使包含 "内含块" (() 块) v_ip ip 扩展高亮区域,使包含 "内含段落" v_is is 扩展高亮区域,使包含 "内含句子" v_it it 扩展高亮区域,使包含 "内含标签块" v_iw iw 扩展高亮区域,使包含 "内含单词" v_i{ i{ 同 iB v_i} i} 同 iB v_o o 跳转到高亮区域的对角 v_p ["x]p 用寄存器内容替换选区;原文本覆盖无名寄存器 v_r r{char} 2 将整个高亮文本替换为 {char} v_s ["x]s 2 删除高亮文本 [到寄存器 x],然后开始插入 v_u u 2 将高亮区域全部转为小写 (可视模式下同 "gu") v_v v 进入字符可视模式,已在该模式时退出可视模式 v_x ["x]x 2 删除高亮文本 [到寄存器 x] v_y ["x]y 抽出高亮文本 [到寄存器 x] v_~ ~ 2 切换高亮文本的大小写

4. 命令行编辑 ex-edit-index

通过 ':'、'!'、'/' 或 '?' 命令调出命令行。 命令行上,普通字符直接在光标处录入。以下只列出有特殊意义的按键。 下文 "补全" 指代上下文智能补全。可按需补全文件名、标签、命令等。 标签 按键 命令行编辑模式功能说明

CTRL-@ 不用 c_CTRL-A CTRL-A 补全光标前的模式,插入所有匹配项 c_CTRL-B CTRL-B 光标移动到命令行开头 c_CTRL-C CTRL-C<Esc> c_CTRL-D CTRL-D 列出光标前模式的所有匹配项 c_CTRL-E CTRL-E 光标移动到命令行末尾 'cedit' CTRL-F 'cedit' 缺省值: 打开命令行窗口;否则不用 c_CTRL-G CTRL-G 'incsearch' 激活时,跳转到下一个匹配项 c_<BS> <BS> 删除光标前面的字符 c_digraph {char1} <BS> {char2} 启用 'digraph' 时,输入二合字母 c_CTRL-H CTRL-H<BS> c_<Tab> <Tab> 'wildchar'<Tab> 时: 触发光标前的模式的补全 c_<S-Tab> <S-Tab>CTRL-P c_wildchar 'wildchar' 触发光标前的模式的补全 (缺省: <Tab>) c_CTRL-I CTRL-I<Tab> c_<NL> <NL><CR> c_CTRL-J CTRL-J<CR> c_CTRL-K CTRL-K {char1} {char2} 输入二合字母 c_CTRL-L CTRL-L 补全光标前的模式,插入所有匹配项的最长公共前缀 c_<CR> <CR> 执行输入的命令 c_CTRL-M CTRL-M<CR> c_CTRL-N CTRL-N 触发 'wildchar' 且有多个匹配项: 跳到下个匹配项 否则: 调取命令行历史中较新的命令 CTRL-O 不用 c_CTRL-P CTRL-P 触发 'wildchar' 且有多个匹配项: 跳到上个匹配项 否则: 调取命令行历史中较旧的命令 c_CTRL-Q CTRL-QCTRL-V,但部分终端可能用于终端控制流 c_CTRL-R CTRL-R {reg} 插入寄存器内容或特殊对象到光标处,如同键盘输入 c_CTRL-R_CTRL-O CTRL-R CTRL-O {reg} c_CTRL-R_CTRL-R CTRL-R CTRL-R {reg} 插入寄存器内容或特殊对象到光标处,按本义插入 CTRL-S 不用,但部分终端可能用于终端控制流 c_CTRL-T CTRL-T 'incsearch' 激活时,跳转到上一个匹配项 c_CTRL-U CTRL-U 清空整行命令 c_CTRL-V CTRL-V 按本义插入非数位字符、或通过数值形式输入字符 c_CTRL-W CTRL-W 删除光标前一个单词 CTRL-X 不用 (预留作补全用) CTRL-Y 复制 (抽出) 无模式选区内容 CTRL-Z 不用 (预留作挂起用) c_<Esc> <Esc> 放弃命令行,退出命令行模式而不执行命令 c_CTRL-[ CTRL-[<Esc> c_CTRL-\_CTRL-G CTRL-\ CTRL-G 切换到 'insertmode' 指定的模式,放弃命令行 c_CTRL-\_CTRL-N CTRL-\ CTRL-N 切换到普通模式,放弃命令行 CTRL-\ a - d 预留给扩展用 c_CTRL-\_e CTRL-\ e {expr} 用表达式 {expr} 的计算结果替换整个命令行 CTRL-\ f - z 预留给扩展用 CTRL-\ 其他 不用 c_CTRL-] CTRL-] 触发缩写展开 c_CTRL-^ CTRL-^ 切换是否启用 :lmap 映射 c_CTRL-_ CTRL-_ 切换语言,需打开 'allowrevins' (希伯来/波斯语) c_<Del> <Del> 删除光标所在的字符 c_<Left> <Left> 光标左移一个字符 c_<S-Left> <S-Left> 光标左移一个单词 c_<C-Left> <C-Left> 光标左移一个单词 c_<Right> <Right> 光标右移一个字符 c_<S-Right> <S-Right> 光标右移一个单词 c_<C-Right> <C-Right> 光标右移一个单词 c_<Up> <Up> 调取匹配光标前模式的前一条历史命令 c_<S-Up> <S-Up> 逐条上翻历史命令 (不匹配前缀) c_<Down> <Down> 调取匹配光标前模式的后一条历史命令 c_<S-Down> <S-Down> 逐条下翻历史命令 (不匹配前缀) c_<Home> <Home> 光标移到命令行开头 c_<End> <End> 光标移到命令行末尾 c_<PageDown> <PageDown><S-Down> c_<PageUp> <PageUp><S-Up> c_<Insert> <Insert> 在命令行插入/命令行替换模式间切换 c_<LeftMouse> <LeftMouse> 将光标定位到标点击位置 补全菜单模式快捷键 (见 'wildmenu') (非弹出菜单方式) / (弹出菜单方式) <Up> 上移到上级目录 / 选中上一项候选 <Down> 进入下级子菜单 / 选中下一项候选 <Left> 选中上一项候选 / 上移到上级目录 <Right> 选中下一项候选 / 进入下级子菜单 CTRL-P 选中上一项候选 CTRL-N 选中下一项候选 <CR> 菜单补全时进入下级子菜单 CTRL-E 退出补全,恢复命令行原始文本 CTRL-Y 选中当前候选项并结束补全 其他 退出补全,录入当前键入字符 'wildoptions' 为 "pum" 时 (弹出菜单方式) 额外快捷键 <PageUp> 反向翻页选取候选项 <PageDown> 正向翻页选取候选项

5. 终端作业模式 terminal-job-index

终端窗口不接受除窗口命令 ( CTRL-W ) 外的绝大多数普通模式命令。要使用这些命令, 需先切换到终端普通模式。以下列出终端窗口特有的快捷键。 以下按键假定 'termwinkey' 使用缺省值,否则应替换 CTRL-W 前缀为设置值。 标签 按键 终端作业模式功能说明

t_CTRL-\_CTRL-N CTRL-\ CTRL-N 切换到终端普通模式 t_CTRL-W_N CTRL-W N 切换到终端普通模式 (译者注: N 必须为大写) t_CTRL-W_: CTRL-W : 输入 Ex 命令 t_CTRL-W_. CTRL-W . 向终端作业发送 CTRL-W CTRL-W CTRL-\ 向终端作业发送 CTRL-\ t_CTRL-W_quote CTRL-W " {reg} 在终端中粘贴寄存器 {reg} 内容 t_CTRL-W_CTRL-C CTRL-W CTRL-C 强制终止作业 t_CTRL-W_CTRL-W CTRL-W CTRL-W 移动焦点到下个窗口 t_CTRL-W_gt CTRL-W gt 切换到下一个标签页,同 gt t_CTRL-W_gT CTRL-W gT 切换到上一个标签页,同 gT 亚瑟王,你找到 (圣杯) 了! holy-grail :smile

6. EX 命令 ex-cmd-index :index

以下简短罗列全部 ":" 命令。不含参数说明。命令名可选部分用 [] 括起。按名字必选 部分排序。 标签 命令 功能说明

: : 空动作 :range :{range} 跳转到 {range} 范围的末行 :! :! 过滤范围文本 ( :range! ),或执行外部命令 :!! :!! 重复上次的 ":!" 命令 :# :# 同 ":number" :& :& 重复前次的 ":substitute" 替代命令 :star :* 使用上次的可视选区作为范围,等价于 :'<,'> :< :< 左移范围行 'shiftwidth' 列 (<< 双倍,依此类推) := := 显示文件末行或范围末行的行号 :> :> 右移范围行 'shiftwidth' 列 (>> 双倍,依此类推) :@ :@ 将寄存器内容作为 Ex 命令执行 :@@ :@@ 重复上次的 ":@" 命令 :2match :2mat[ch] 定义第二组高亮匹配 :3match :3mat[ch] 定义第三组高亮匹配 :Next :N[ext] 编辑参数列表中往上第 N 个文件 :Print :P[rint] 显示行 :X :X 提示输入加密密钥 :append :a[ppend] 在行范围下方插入为以 "." 行结束的输入内容 :abbreviate :ab[breviate] 列出或定义缩写 :abclear :abc[lear] 清空所有缩写 :aboveleft :abo[veleft] 使后续命令的分割窗口出现在左侧或上方 :abstract :abstract 定义 Vim9 抽象类 :all :al[l] 为参数列表的每个文件打开一个窗口 :amenu :am[enu] 定义所有模式适用的菜单 :anoremenu :an[oremenu] 定义所有模式适用的非递归菜单 :args :ar[gs] 显示参数列表 :argadd :arga[dd] 添加项目到参数列表 :argdedupe :argded[upe] 移除参数列表里的重复文件名 :argdelete :argd[elete] 从参数列表中删除项目 :argedit :arge[dit] 添加项目到参数列表中并编辑该文件 :argdo :argdo 对参数列表每个文件执行命令 :argglobal :argg[lobal] 定义全局参数列表 :arglocal :argl[ocal] 定义局部参数列表 :argument :argu[ment] 跳转到参数列表中第 N 个文件 :ascii :as[cii] 显示光标所在字符的 ASCII 值 :autocmd :au[tocmd] 定义或显示自动命令 :augroup :aug[roup] 选择后续自动命令使用的自动命令组 :aunmenu :aun[menu] 删除所有模式适用的菜单 :buffer :b[uffer] 编辑缓冲区列表中第 N 个缓冲区 :bNext :bN[ext] 编辑缓冲区列表中往上第 N 个缓冲区 :ball :ba[ll] 为缓冲区列表每个缓冲区打开窗口 :badd :bad[d] 添加缓冲区到缓冲区列表 :balt :balt 添加缓冲区到缓冲区列表,同时设置轮换文件 :bdelete :bd[elete] 从缓冲区列表中删除缓冲区 :behave :be[have] 设置鼠标和选择行为 :belowright :bel[owright] 使后续命令的分割窗口出现在右侧或下方 :bfirst :bf[irst] 编辑缓冲区列表中首个缓冲区 :blast :bl[ast] 编辑缓冲区列表中最后一个缓冲区 :bmodified :bm[odified] 编辑缓冲区列表中往下第 N 个修改过的缓冲区 :bnext :bn[ext] 编辑缓冲区列表中往下第 N 个缓冲区 :botright :bo[tright] 使后续命令的分割窗口出现在最右侧或最下方 :bprevious :bp[revious] 编辑缓冲区列表中往上第 N 个缓冲区 :brewind :br[ewind] 同 :bfirst :break :brea[k] 跳出 while 循环 :breakadd :breaka[dd] 添加调试器断点 :breakdel :breakd[el] 删除调试器断点 :breaklist :breakl[ist] 列出调试器断点 :browse :bro[wse] 弹出文件选择对话框 :bufdo :bufd[o] 对每个列表内缓冲区执行命令 :buffers :buffers 显示所有缓冲区 :bunload :bun[load] 卸载缓冲区 N :bwipeout :bw[ipeout] 真正删除缓冲区 N :change :c[hange] 将行范围替换为以 "." 行结束的输入内容 :cNext :cN[ext] 跳转到上 N 个错误 :cNfile :cNf[ile] 跳转到上 N 个文件的最后一个错误 :cabbrev :ca[bbrev] 列出或定义命令行模式缩写 :cabclear :cabc[lear] 清空所有命令行模式缩写 :cabove :cabo[ve] 跳转到当前行上方第 N 个错误 :caddbuffer :cad[dbuffer] 从错误缓冲区补充快速修复列表 :caddexpr :cadde[xpr] 通过表达式计算结果补充快速修复列表 :caddfile :caddf[ile] 从错误文件补充快速修复列表 :cafter :caf[ter] 跳转到当前光标之后第 N 个错误 :call :cal[l] 调用函数 :catch :cat[ch] :try 命令的捕获异常子句 :cbefore :cbe[fore] 跳转到当前光标之前第 N 个错误 :cbelow :cbel[ow] 跳转到当前行下方第 N 个错误 :cbottom :cbo[ttom] 滚动到快速修复窗口底部 :cbuffer :cb[uffer] 从当前缓冲区提取错误列表,并跳转到首个错误 :cc :cc 跳转到第 N 个错误 :cclose :ccl[ose] 关闭快速修复窗口 :cd :cd 切换工作目录 :cdo :cdo 对每个有效错误列表项目执行命令 :cfdo :cfd[o] 对每个错误列表文件执行命令 :center :ce[nter] 居中对齐范围行 :cexpr :cex[pr] 从表达式计算结果提取错误列表,并跳转到首个错误 :cfile :cf[ile] 从含错误信息的文件提取错误列表,跳转到首个错误 :cfirst :cfir[st] 跳转到第 N 个错误,缺省首个错误 :cgetbuffer :cgetb[uffer] 从当前缓冲区提取错误列表 :cgetexpr :cgete[xpr] 从表达式计算结果提取错误列表 :cgetfile :cg[etfile] 从含错误信息的文件提取错误列表 :changes :changes 查看改变表 :chdir :chd[ir] 同 :cd :checkpath :che[ckpath] 列出所有包含文件 :checktime :checkt[ime] 检验已加载缓冲区的时间戳 :chistory :chi[story] 列出所有历史错误列表 :class :class 开启类定义 :clast :cla[st] 跳转到第 N 个错误,缺省最后一个错误 :clearjumps :cle[arjumps 清空当前窗口跳转表 :clipreset :clip[reset] 重新应用 'clipmethod',更新剪贴板访问方法 :clist :cl[ist] 列出所有错误 :close :clo[se] 关闭当前窗口 :cmap :cm[ap] 显示或定义命令行模式映射 :cmapclear :cmapc[lear] 清除所有命令行模式映射 :cmenu :cme[nu] 显示或定义命令行模式菜单 :cnext :cn[ext] 往下跳转 N 个错误 :cnewer :cnew[er] 跳转到第 N 个较新的错误列表 :cnfile :cnf[ile] 跳转到往下 N 个文件的首个错误 :cnoremap :cno[remap] 定义命令行模式非递归映射 :cnoreabbrev :cnorea[bbrev] 定义命令行模式非递归缩写 :cnoremenu :cnoreme[nu] 定义命令行模式非递归菜单 :copy :co[py] 复制范围行到新位置 :colder :col[der] 跳转到第 N 个较旧的错误列表 :colorscheme :colo[rscheme] 加载指定色彩方案 :command :com[mand] 自定义用户命令 :comclear :comc[lear] 清空所有用户自定义命令 :compiler :comp[iler] 加载指定编译器的专用选项设置 :continue :con[tinue] 回到 :while 循环开头继续执行 :confirm :conf[irm] 执行指定命令,遇到需要确认操作时,弹出对话框 :const :cons[t] 定义常量变量 :copen :cope[n] 打开快速修复窗口,显示当前错误列表 :cprevious :cp[revious] 往上跳转 N 个错误 :cpfile :cpf[ile] 跳转到往上 N 个文件的末个错误 :cquit :cq[uit] 异常退出 Vim 并返回退出码 N :crewind :cr[ewind] 同 :cfirst :cscope :cs[cope] 执行 cscope 检索命令 :cstag :cst[ag] 通过 cscope 跳转标签 :cunmap :cu[nmap] 删除命令行模式映射 :cunabbrev :cuna[bbrev] 删除命令行模式缩写 :cunmenu :cunme[nu] 删除命令行模式菜单 :cwindow :cw[indow] 有错误时打开快速修复窗口,无错误时关闭该窗口 :delete :d[elete] 删除范围行 :debug :deb[ug] 在调试模式下执行单条命令 :debuggreedy :debugg[reedy] 从标准输入流读取调试模式命令 :def :def 定义 Vim9 用户函数 :defcompile :defc[ompile] 编译当前脚本中 Vim9 用户函数 :defer :defe[r] 当前函数结束后延迟执行指定函数 :delcommand :delc[ommand] 删除用户自定义命令 :delfunction :delf[unction] 删除用户自定义函数 :delmarks :delm[arks] 删除位置标记 :diffupdate :dif[fupdate] 刷新 'diff' 缓冲区的比较结果高亮和折叠 :diffget :diffg[et] 从对方缓冲区获取内容,消除差异 :diffoff :diffo[ff] 关闭比较模式 :diffpatch :diffp[atch] 应用补丁然后显示差异 :diffput :diffpu[t] 对方缓冲区从当前缓冲区获取内容,消除差异 :diffsplit :diffs[plit] 新开窗口显示另一个文件,与当前窗口进行比较 :diffthis :difft[his] 使当前窗口成为 diff 窗口,参与比较 :digraphs :dig[raphs] 查看或定义二合字母 :display :di[splay] 查看寄存器内容 :disassemble :disa[ssemble] 反汇编 Vim9 用户函数 :djump :dj[ump] 跳转到范围行内首个匹配光标下标识符的 'define' :dl :d[elete]l :delete 带 'l' 标志位,删除并列出范围行 :dlist :dli[st] 列出范围行内所有匹配光标下标识符的 'define' :doautocmd :do[autocmd] 在当前缓冲区手动执行指定自动命令 :doautoall :doautoa[ll] 对所有已加载缓冲区执行指定自动命令 :dp :d[elete]p :delete 带 'p' 标志位,删除并显示范围行 :drop :dr[op] 指定文件已有窗口时跳转,否则在当前窗口打开文件 :dsearch :ds[earch] 显示范围行内首个匹配光标下标识符的 'define' :dsplit :dsp[lit] 分割窗口跳至范围内光标下标识符的首个 'define' :edit :e[dit] 编辑文件 :earlier :ea[rlier] 切换到第 N 个较旧的文本状态 (撤销) :echo :ec[ho] 回显表达式结果 :echoconsole :echoc[onsole] 类似 ":echomsg",但直接写到标准输出 :echoerr :echoe[rr] 类似 ":echo",但用作错误信息输出并记入历史 :echohl :echoh[l] 设置 echo 系列命令使用的高亮 :echomsg :echom[sg] 类似 ":echo" 并记入历史 :echon :echon 类似 ":echo",但不自动换行 :echowindow :echow[indow] 类似 ":echomsg",但使用弹出窗口输出 :else :el[se] :if 条件分支 :elseif :elsei[f] :if 多条件分支 :emenu :em[enu] 手动执行 (execute) 指定名称的菜单 :endclass :endclass 结束类定义 :enddef :enddef 结束 :def 开始的 Vim9 用户函数定义 :endenum :endenum 结束枚举定义 :endif :en[dif] 结束最近的 :if 语句 :endinterface :endinterface 结束接口定义 :endfor :endfo[r] 结束最近的 :for 循环 :endfunction :endf[unction] 结束 :function 开始的老式用户函数定义 :endtry :endt[ry] 结束最近的 :try 语句 :endwhile :endw[hile] 结束最近的 :while 循环 :enew :ene[w] 新建无名缓冲区 :enum :enum 开始枚举定义 :eval :ev[al] 计算表达式但放弃其值 :ex :ex 同 ":edit" :execute :exe[cute] 计算表达式结果作为命令执行 :exit :exi[t] 同 ":xit" :export :exp[ort] Vim9: 导出脚本项目 :exusage :exu[sage] Ex 命令总览 :file :f[ile] 显示当前文件名和光标位置、或设置当前文件名 :files :files 显示所有缓冲区 :filetype :filet[ype] 开启/关闭文件类型检测 :filter :filt[er] 过滤后续命令输出,检索匹配指定模式的行 :find :fin[d] 从 'path' 里查找并编辑文件 :final :final Vim9 中定义不可变变量 (引用不可变,但值可变) :finally :fina[lly] :try 命令执行清理子句 :finish :fini[sh] 退出 Vim 脚本的执行 :first :fir[st] 跳转到参数列表首个文件 :fixdel :fix[del] 设置 <Del> 的键码 :fold :fo[ld] 创建折叠 :foldclose :foldc[lose] 关闭折叠 :folddoopen :foldd[oopen] 对非关闭折叠内的所有行执行命令 :folddoclosed :folddoc[losed] 对已关闭折叠内的所有行执行命令 :foldopen :foldo[pen] 展开折叠 :for :for for 循环 :function :fu[nction] 定义老式用户函数 :global :g[lobal] 对匹配行执行命令 :goto :go[to] 跳转到缓冲区指定字节 :grep :gr[ep] 执行 'grepprg' (缺省 grep) 并跳转到首个匹配项 :grepadd :grepa[dd] 类似 ":grep",但追加到错误列表而非创建新列表 :gui :gu[i] 启动 GUI :gvim :gv[im] 启动 GUI :hardcopy :ha[rdcopy] 打印文本 (到打印机) :help :h[elp] 打开帮助窗口 :helpclose :helpc[lose] 关闭帮助窗口 :helpfind :helpf[ind] 打开显示帮助窗口的对话框 :helpgrep :helpg[rep] 类似 ":grep",在帮助文档中搜索并跳到首个匹配项 :helptags :helpt[ags] 生成目录帮助标签 :highlight :hi[ghlight] 设置高亮规则 :hide :hid[e] 隐藏当前缓冲区、或为后续命令临时隐藏当前缓冲区 :history :his[tory] 显示历史记录 :horizontal :hor[izontal] 后续窗口命令会以水平方式工作 :insert :i[nsert] 在行范围上方插入为以 "." 行结束的输入内容 :iabbrev :ia[bbrev] 列出或定义插入模式缩写 :iabclear :iabc[lear] 清空所有插入模式缩写 :if :if 条件控制语句,满足条件时执行命令 :ijump :ij[ump] 跳转到范围行内首个光标下关键字的匹配 :ilist :il[ist] 列出范围行内所有光标下关键字的匹配 :imap :im[ap] 显示或定义插入模式映射 :imapclear :imapc[lear] 清除所有插入模式映射 :imenu :ime[nu] 显示或定义插入模式菜单 :import :imp[ort] Vim9: 导入脚本项目 :inoremap :ino[remap] 定义插入模式非递归映射 :inoreabbrev :inorea[bbrev] 定义插入模式非递归缩写 :inoremenu :inoreme[nu] 定义插入模式非递归菜单 :intro :int[ro] 显示 Vim 介绍信息 :interface :interface 开始接口定义 :iput :ip[ut] 类似 :put ,但放置后自动适配当前行缩进 :isearch :is[earch] 显示范围行内首个光标下关键字的匹配 :isplit :isp[lit] 分割窗口,并跳转到范围内光标下关键字的首个匹配 :iunmap :iu[nmap] 删除插入模式映射 :iunabbrev :iuna[bbrev] 删除插入模式缩写 :iunmenu :iunme[nu] 删除插入模式菜单 :join :j[oin] 合并所有范围行 :jumps :ju[mps] 显示跳转表 :k :k 设置位置标记 :keepmarks :kee[pmarks] 执行后续外部命令时临时保持位置标记不变 :keepalt :keepa[lt] 执行后续命令时临时保持轮换文件不变 :keepjumps :keepj[umps] 执行后续命令时临时保持跳转表和位置标记不变 :keeppatterns :keepp[atterns] 执行后续命令时临时保持搜索模式历史不变 :list :l[ist] 列出行内容 (以 "^" 记法显示不可显示字符) :lNext :lN[ext] 位置列表中往上跳转 N 个位置 :lNfile :lNf[ile] 跳转到位置列表中往上 N 个文件的最后一个位置 :last :la[st] 跳转到参数列表最后一个文件 :labove :lab[ove] 跳转到位置列表中当前行上方第 N 个位置 :laddexpr :lad[dexpr] 通过表达式计算结果补充位置列表 :laddbuffer :laddb[uffer] 从错误缓冲区补充位置列表 :laddfile :laddf[ile] 从错误文件补充位置列表 :lafter :laf[ter] 跳转到位置列表中当前光标之后第 N 个位置 :language :lan[guage] 设置语言环境 (locale) :later :lat[er] 切换到第 N 个较新的文本状态 (重做) :lbuffer :lb[uffer] 从当前错误缓冲区获取位置列表,并跳转到首个位置 :lbefore :lbe[fore] 跳转到位置列表中当前光标之前第 N 个位置 :lbelow :lbel[ow] 跳转到位置列表中当前行下方第 N 个位置 :lbottom :lbo[ttom] 滚动到位置窗口底部 :lcd :lc[d] 切换当前窗口的局部工作目录 :lchdir :lch[dir] 切换当前窗口的局部工作目录 :lclose :lcl[ose] 关闭位置窗口 :lcscope :lcs[cope] 类似 ":cscope",但使用位置列表 :ldo :ld[o] 对每个有效位置列表项目执行命令 :left :le[ft] 左对齐范围行 :leftabove :lefta[bove] 使后续命令的分割窗口出现在左侧或上方 :legacy :leg[acy] 使后续命令临时应用老式脚本语法 :let :let 给变量或选项赋值 :lexpr :lex[pr] 从表达式计算结果提取位置列表,并跳转到首个位置 :lfile :lf[ile] 从含错误信息的文件提取位置列表,跳转到首个位置 :lfdo :lfd[o] 对每个位置列表文件执行命令 :lfirst :lfir[st] 跳转到位置列表中第 N 个位置,缺省首个位置 :lgetfile :lg[etfile] 从含错误信息的文件提取位置列表 :lgetbuffer :lgetb[uffer] 从当前缓冲区提取位置列表 :lgetexpr :lgete[xpr] 从表达式计算结果提取位置列表 :lgrep :lgr[ep] 执行 'grepprg',结果存入位置列表,跳至首个位置 :lgrepadd :lgrepa[dd] 类似 ":lgrep",但追加到位置列表而非创建新列表 :lhelpgrep :lh[elpgrep] 类似 ":helpgrep",但使用位置列表 :lhistory :lhi[story] 列出所有位置列表 :ll :ll 跳转到位置列表中第 N 个位置 :llast :lla[st] 跳转到位置列表中第 N 个位置,缺省最后一个位置 :llist :lli[st] 列出位置列表所有位置 :lmap :lm[ap] 显示或定义插入、命令行和语言参数模式映射 :lmake :lmak[e] 执行 'makeprg',解析错误信息到位置列表 :lmapclear :lmapc[lear] 清除所有插入、命令行和语言参数模式映射 :lnoremap :ln[oremap] 定义插入、命令行和语言参数模式非递归映射 :lnext :lne[xt] 在位置列表中往下跳转 N 个位置 :lnewer :lnew[er] 跳转到第 N 个较新的位置列表 :lnfile :lnf[ile] 跳转到位置列表中往下 N 个文件的首个位置 :loadview :lo[adview] 从文件里为当前窗口载入视图 :loadkeymap :loadk[eymap] 定义键盘映射表,具体映射是其后内容直到文件结尾 :lockmarks :loc[kmarks] 执行后续 Vim 命令时临时保持位置标记不变 :lockvar :lockv[ar] 给变量加锁 :lolder :lol[der] 跳转到第 N 个较旧的位置列表 :lopen :lop[en] 打开位置列表窗口 :lprevious :lp[revious] 在位置列表中往上跳转 N 个位置 :lpfile :lpf[ile] 跳转到位置列表中往上 N 个文件的最后一个位置 :lrewind :lr[ewind] 同 :lfirst :ls :ls 显示所有缓冲区 :ltag :lt[ag] 跳转到标签,并将匹配项加入位置列表 :lunmap :lu[nmap] 删除插入、命令行和语言参数模式映射 :lua :lua 执行 Lua 命令 :luado :luad[o] 对范围内每行执行 Lua 命令 :luafile :luaf[ile] 执行 Lua 脚本文件 :lvimgrep :lv[imgrep] 在多个文件中搜索模式,结果存入位置列表 :lvimgrepadd :lvimgrepa[dd] 类似 :lvimgrep,但追加到位置列表而非创建新列表 :lwindow :lw[indow] 有错误时打开位置列表窗口,无错误时关闭该窗口 :move :m[ove] 移动范围行到新位置 :mark :ma[rk] 设置位置标记 :make :mak[e] 执行 'makeprg',解析错误信息到错误列表 :map :map 显示或定义映射 (无 ! 普通可视,有 ! 命令插入) :mapclear :mapc[lear] 清除所有映射 (无 ! 普通可视,有 ! 命令插入) :marks :marks 列出所有位置标记 :match :mat[ch] 定义高亮匹配规则 :menu :me[nu] 显示或定义菜单 (无 ! 普通可视,有 ! 命令插入) :menutranslate :menut[ranslate] 添加菜单翻译项目 :messages :mes[sages] 查看历史消息 :mkexrc :mk[exrc] 将当前映射和设置写入配置文件,可用于恢复设置 :mksession :mks[ession] 保存会话信息到文件 :mkspell :mksp[ell] 生成 .spl 格式的拼写文件 :mkvimrc :mkv[imrc] 将当前映射和设置写入 vimrc 文件 :mkview :mkvie[w] 保存当前窗口视图到文件 :mode :mod[e] 显示或设置屏幕模式 :mzscheme :mz[scheme] 执行 MzScheme 命令 :mzfile :mzf[ile] 执行 MzScheme 脚本文件 :next :n[ext] 编辑参数列表中往下第 N 个文件 :nbkey :nb[key] 向 Netbeans 传递按键 :nbclose :nbc[lose] 关闭当前 Netbeans 会话 :nbstart :nbs[tart] 开启新 Netbeans 会话 :new :new 创建新空白窗口 :nmap :nm[ap] 显示或定义普通模式映射 :nmapclear :nmapc[lear] 清除所有普通模式映射 :nmenu :nme[nu] 显示或定义普通模式菜单 :nnoremap :nn[oremap] 定义普通模式非递归映射 :nnoremenu :nnoreme[nu] 定义普通模式非递归菜单 :noremap :no[remap] 定义非递归映射 (无 ! 普通可视,有 ! 命令插入) :noautocmd :noa[utocmd] 为后续命令屏蔽自动命令 :nohlsearch :noh[lsearch] 暂停 'hlsearch' 高亮 :noreabbrev :norea[bbrev] 定义非递归缩写 :noremenu :noreme[nu] 定义非递归菜单 (无 ! 普通可视,有 ! 命令插入) :normal :norm[al] 执行普通模式命令 :noswapfile :nos[wapfile] 后续命令执行时不创建交换文件 :number :nu[mber] 显示行,同时给出行号 :nunmap :nun[map] 删除普通模式映射 :nunmenu :nunme[nu] 删除普通模式菜单 :open :o[pen] 启动 Vi 打开模式 (未完整实现,仅提供模拟) :oldfiles :ol[dfiles] 列出 viminfo 文件中记录的位置标记所在历史文件 :omap :om[ap] 显示或定义操作符等待模式映射 :omapclear :omapc[lear] 清除所有操作符等待模式映射 :omenu :ome[nu] 显示或定义操作符等待模式菜单 :only :on[ly] 关闭所有窗口,只保留当前窗口 :onoremap :ono[remap] 定义操作符等待模式非递归映射 :onoremenu :onoreme[nu] 定义操作符等待模式非递归菜单 :options :opt[ions] 打开选项窗口 :ounmap :ou[nmap] 删除操作符等待模式映射 :ounmenu :ounme[nu] 删除操作符等待模式菜单 :ownsyntax :ow[nsyntax] 为本窗口设置独立的局部语法高亮 :print :p[rint] 显示行 :packadd :pa[ckadd] 从 'packpath' 加载插件包 :packloadall :packl[oadall] 从 'packpath' 加载所有插件包 :pbuffer :pb[uffer] 在预览窗口编辑缓冲区 :pclose :pc[lose] 关闭预览窗口 :perl :pe[rl] 执行 Perl 命令 :pedit :ped[it] 在预览窗口编辑文件 :promptfind :pro[mptfind] 打开 GUI 搜索对话框 :profile :prof[ile] 启动剖视 (profile) 函数或脚本 :profdel :profd[el] 停止剖视 (profile) 函数或脚本 :promptrepl :promptr[epl] 打开 GUI 搜索/替代对话框 :perldo :perld[o] 对范围内每行执行 Perl 命令 :pop :po[p] 回退到标签栈上第 N 个较旧的项目 :popup :popu[p] 弹出指定名称的菜单 :ppop :pp[op] 在预览窗口回退到标签栈上第 N 个较旧的项目 :preserve :pre[serve] 将当前缓冲区所有文本写入交换文件 :previous :prev[ious] 编辑参数列表中往上第 N 个文件 :psearch :ps[earch] 在预览窗口中显示范围行内首个光标下关键字的匹配 :ptag :pt[ag] 在预览窗口中显示标签 :ptNext :ptN[ext] 在预览窗口中显示标签的上 N 个匹配 :ptfirst :ptf[irst] 在预览窗口中显示标签的第 N 个匹配 (缺省为首个) :ptjump :ptj[ump] 列出标签所有匹配,只有一个匹配时在预览窗口打开 :ptlast :ptl[ast] 在预览窗口中显示标签的最后一个匹配 :ptnext :ptn[ext] 在预览窗口中显示标签的下 N 个匹配 :ptprevious :ptp[revious] 在预览窗口中显示标签的上 N 个匹配 :ptrewind :ptr[ewind] 同 :ptfirst :ptselect :pts[elect] 列出标签所有匹配,选中后在预览窗口打开 :put :pu[t] 在范围行下方或上方 (有 ! 时) 放置寄存器文本 :public :public 类或对象成员前缀,指定公共访问域 :pwd :pw[d] 显示当前工作目录 :python :py[thon] 执行 Python 命令 :py3 :py3 执行 Python 3 命令 :py3do :py3d[o] 对范围内每行执行 Python 3 命令 :py3file :py3f[ile] 执行 Python 3 脚本文件 :pydo :pyd[o] 对范围内每行执行 Python 命令 :pyfile :pyf[ile] 执行 Python 脚本文件 :python3 :python3 同 :py3 :pythonx :pythonx 同 :pyx :pyx :pyx 执行 python_x 命令 :pyxdo :pyxd[o] 对范围内每行执行 python_x 命令 :pyxfile :pyxf[ile] 执行 python_x 脚本文件 :quit :q[uit] 退出当前窗口 (最后一个窗口退出后,退出 Vim) :qall :qa[ll] 退出 Vim :quitall :quita[ll] 同 ":qall" :read :r[ead] 读入文件内容插入到当前文本 :recover :rec[over] 从交换文件恢复文件 :redo :red[o] 重做一次被撤销的更改 :redir :redi[r] 重定向消息到文件或者寄存器 :redraw :redr[aw] 强制刷新屏幕 :redrawstatus :redraws[tatus] 强制刷新状态行 :redrawtabline :redrawt[abline] 强制刷新标签页行 :redrawtabpanel :redrawtabp[anel] 强制刷新标签页面板 :registers :reg[isters] 显示所有寄存器内容 :resize :res[ize] 调整当前窗口高度 :retab :ret[ab] 调整制表宽度 :return :retu[rn] 从用户函数返回 :rewind :rew[ind] 同 :first :right :ri[ght] 右对齐范围行 :rightbelow :rightb[elow] 使后续命令的分割窗口出现在右侧或者下方 :runtime :ru[ntime] 从 'runtimepath' 里查找并执行匹配的 vim 脚本 :ruby :rub[y] 执行 Ruby 命令 :rubydo :rubyd[o] 对范围内每行执行 Ruby 命令 :rubyfile :rubyf[ile] 执行 Ruby 脚本文件 :rundo :rund[o] 从文件读取撤销历史 :rviminfo :rv[iminfo] 读取 viminfo 文件 :substitute :s[ubstitute] 查找和替代文本 :sNext :sN[ext] 分割窗口并编辑参数列表中往上第 N 个文件 :sargument :sa[rgument] 分割窗口并编辑参数列表第 N 个文件 :sall :sal[l] 为参数列表所有文件打开窗口 :sandbox :san[dbox] 在沙盘里执行命令 :saveas :sav[eas] 文件另存为 :sbuffer :sb[uffer] 分割窗口并编辑指定缓冲区 :sbNext :sbN[ext] 分割窗口并编辑缓冲区列表中往上第 N 个缓冲区 :sball :sba[ll] 为所有缓冲区打开窗口 :sbfirst :sbf[irst] 分割窗口并编辑缓冲区列表首个缓冲区 :sblast :sbl[ast] 分割窗口并编辑缓冲区列表末个缓冲区 :sbmodified :sbm[odified] 分割窗口并编辑列表中往下第 N 个修改过的缓冲区 :sbnext :sbn[ext] 分割窗口并编辑缓冲区列表往下第 N 个缓冲区 :sbprevious :sbp[revious] 分割窗口并编辑缓冲区列表往上第 N 个缓冲区 :sbrewind :sbr[ewind] 同 :sbfirst :scriptnames :scr[iptnames] 列出已加载过的所有 Vim 脚本 :scriptencoding :scripte[ncoding] 指定 Vim 脚本编码 :scriptversion :scriptv[ersion] 指定 Vim 脚本版本 :scscope :scs[cope] 分割窗口并执行 cscope 命令 :set :se[t] 显示或设置选项 :setfiletype :setf[iletype] 仅在未设置时设置 'filetype' :setglobal :setg[lobal] 显示或设置全局选项值 :setlocal :setl[ocal] 显示或设置局部选项值 :sfind :sf[ind] 分割窗口并编辑从 'path' 里找到的文件 :sfirst :sfir[st] 分割窗口并编辑参数列表首个文件 :shell :sh[ell] 打开外壳程序,退出时返回 Vim :sign :sig[n] 管理标号 :silent :sil[ent] 静默执行后续命令 :simalt :sim[alt] Win32 GUI: 模拟 Windows ALT 键 :sleep :sl[eep] 睡眠 N 秒,有 ! 时,同时隐藏光标 :slast :sla[st] 分割窗口并编辑参数列表末个文件 :smagic :sm[agic] 类似 :substitute,但总是打开 'magic' :smap :smap 显示或定义选择模式映射 :smapclear :smapc[lear] 清除所有选择模式映射 :smenu :sme[nu] 显示或定义选择模式菜单 :smile :smi[le] 彩蛋,让用户高兴一下 :snext :sn[ext] 分割窗口并编辑参数列表中往下第 N 个文件 :snomagic :sno[magic] 类似 :substitute,但总是关闭 'magic' :snoremap :snor[emap] 定义选择模式非递归映射 :snoremenu :snoreme[nu] 定义选择模式非递归菜单 :source :so[urce] 执行文件中的 Vim 或 Ex 命令 :sort :sor[t] 对范围行排序 :split :sp[lit] 分割当前窗口 :spellgood :spe[llgood] 添加正确单词到拼写词典 :spelldump :spelld[ump] 分割窗口并显示所有正确单词 :spellinfo :spelli[nfo] 显示已加载拼写文件信息 :spellrepall :spellr[epall] 用上次 z= 结果,批量替换所有同类的拼写错误 :spellrare :spellra[re] 添加罕见正确单词到拼写词典 :spellundo :spellu[ndo] 从拼写词典里删除正确或错误单词 :spellwrong :spellw[rong] 添加错误单词到拼写词典 :sprevious :spr[evious] 分割窗口并编辑参数列表中往上第 N 个文件 :srewind :sre[wind] 同 :sfirst :stop :st[op] 挂起编辑器,可能会退回外壳 :stag :sta[g] 分割窗口并跳转到指定标签 :startinsert :star[tinsert] 进入插入模式 :startgreplace :startg[replace] 进入虚拟替换模式 :startreplace :startr[eplace] 进入替换模式 :static :static 成员或方法前缀,指定该字段为类成员或类方法 :stjump :stj[ump] 列出标签所有匹配,只有一个匹配时在分割窗口打开 :stopinsert :stopi[nsert] 退出插入模式 :stselect :sts[elect] 列出标签所有匹配,选中后在分割窗口打开 :sunhide :sun[hide] 同 ":unhide" :sunmap :sunm[ap] 删除选择模式映射 :sunmenu :sunme[nu] 删除选择模式菜单 :suspend :sus[pend] 同 ":stop" :sview :sv[iew] 分割窗口并以只读模式打开文件 :swapname :sw[apname] 显示当前交换文件名 :syntax :sy[ntax] 管理语法高亮 :syntime :synti[me] 测试语法高亮速度 :syncbind :sync[bind] 强制同步滚动绑定 :t :t 同 ":copy" :tNext :tN[ext] 跳转到标签的上 N 个匹配 :tab :tab 使后续命令需要打开新窗口时使用新标签页代替 :tabNext :tabN[ext] 切换到上一个标签页 :tabclose :tabc[lose] 关闭当前标签页 :tabdo :tabd[o] 对每个标签页执行命令 :tabedit :tabe[dit] 打开新标签页,编辑文件 :tabfind :tabf[ind] 打开新标签页,编辑从 'path' 里找到的文件 :tabfirst :tabfir[st] 切换到首个标签页 :tablast :tabl[ast] 切换到末个标签页 :tabmove :tabm[ove] 将当前标签页移到第 N 个标签页之后 :tabnext :tabn[ext] 切换到下一个标签页 :tabnew :tabnew 同 :tabedit :tabonly :tabo[nly] 关闭所有标签页,只保留当前标签页 :tabprevious :tabp[revious] 切换到上一个标签页 :tabrewind :tabr[ewind] 同 :tabfirst :tabs :tabs 列出所有标签页及包含窗口 :tag :ta[g] 跳转到指定标签或标签栈上第 N 个较新的项目 :tags :tags 显示标签栈内容 :tcd :tc[d] 切换标签页局部工作目录 :tchdir :tch[dir] 同 :tcd :tcl :tcl 执行 Tcl 命令 :tcldo :tcld[o] 对范围内每行执行 Tcl 命令 :tclfile :tclf[ile] 执行 Tcl 脚本文件 :tearoff :te[aroff] 撕下指定名称的菜单 :terminal :ter[minal] 打开终端窗口 :tfirst :tf[irst] 跳转到标签的首个匹配 :throw :th[row] 抛出异常 :this :this 对象初始化 (如 new() ) 时,对象成员使用的前缀 :tjump :tj[ump] 列出标签所有匹配,只有一个匹配时直接跳转 :tlast :tl[ast] 跳转到标签的末个匹配 :tlmenu :tlm[enu] 显示或定义终端作业模式菜单 :tlnoremenu :tln[oremenu] 定义终端作业模式非递归菜单 :tlunmenu :tlu[nmenu] 删除终端作业模式菜单 :tmenu :tm[enu] 为菜单定义工具提示 :tmap :tma[p] 显示或定义终端作业映射 :tmapclear :tmapc[lear] 清除所有终端作业模式映射 :tnext :tn[ext] 跳转到标签的下 N 个匹配 :tnoremap :tno[remap] 定义终端作业模式非递归映射 :topleft :to[pleft] 使后续命令的分割窗口出现在最顶部或最左端 :tprevious :tp[revious] 跳转到标签的上 N 个匹配 :trewind :tr[ewind] 同 :tfirst :try :try 异常捕获语句块,执行命令,错误或者异常时终止 :tselect :ts[elect] 列出标签所有匹配,选中后跳转 :tunmenu :tu[nmenu] 删除菜单工具提示 :tunmap :tunma[p] 删除终端作业模式映射 :type :type 创建类型别名 :undo :u[ndo] 撤销一次或多次更改 :unabbreviate :una[bbreviate] 删除缩写 :undojoin :undoj[oin] 将下一次更改并入上一个撤销块 :undolist :undol[ist] 列出撤销树叶结点 :unhide :unh[ide] 为所有已加载文件打开窗口 :uniq :uni[q] 删除范围内相邻的重复行 :unlet :unl[et] 删除变量 :unlockvar :unlo[ckvar] 解锁变量 :unmap :unm[ap] 删除映射 (无 ! 普通可视,有 ! 命令插入) :unmenu :unme[nu] 删除菜单 (无 ! 普通可视,有 ! 命令插入) :unsilent :uns[ilent] 非静默模式执行后续命令 :update :up[date] 仅当有修改时保存缓冲区 :vglobal :v[global] 对不匹配行执行命令 (反向 :g) :var :var Vim9 变量声明 :version :ve[rsion] 显示 Vim 版本号和其他信息 :verbose :verb[ose] 执行后续命令时临时设置 'verbose' 为 N :vertical :vert[ical] 后续窗口命令会以垂直方式工作 (如垂直分割) :visual :vi[sual] 用于 "Ex" 模式时退出该模式,否则同 :edit :view :vie[w] 只读方式编辑文件 :vimgrep :vim[grep] 在多个文件中搜索模式 :vim9cmd :vim9[cmd] 后续命令临时使用 Vim9 脚本语法 :vim9script :vim9s[cript] 声明文件为 Vim9 脚本 :vimgrepadd :vimgrepa[dd] 类似 :vimgrep,但追加到当前列表而非创建新列表 :viusage :viu[sage] 普通模式命令总览 :vmap :vm[ap] 显示或定义可视+选择模式映射 :vmapclear :vmapc[lear] 清除所有可视+选择模式映射 :vmenu :vme[nu] 显示或定义可视+选择模式菜单 :vnoremap :vn[oremap] 定义可视+选择模式非递归映射 :vnew :vne[w] 垂直分割建立新空白窗口 :vnoremenu :vnoreme[nu] 定义可视+选择模式非递归菜单 :vsplit :vs[plit] 垂直分割当前窗口 :vunmap :vu[nmap] 删除可视+选择模式映射 :vunmenu :vunme[nu] 删除可视+选择模式菜单 :write :w[rite] 保存文件 :wNext :wN[ext] 保存文件,然后编辑参数列表中往上第 N 个文件 :wall :wa[ll] 保存所有修改过的缓冲区 :while :wh[ile] 循环语句,只要条件满足,重复执行循环体 :winsize :wi[nsize] 设置 GUI Vim 窗口大小 (已废弃) :wincmd :winc[md] 执行窗口 (CTRL-W) 命令 :windo :wind[o] 对每个窗口执行命令 :winpos :winp[os] 获取或者设置 GUI Vim 窗口位置 :wlrestore :wl[restore] 恢复 Wayland 合成器 (compositor) 连接 :wnext :wn[ext] 保存文件,然后编辑参数列表中往下第 N 个文件 :wprevious :wp[revious] 保存文件,然后编辑参数列表中往上第 N 个文件 :wq :wq 保存文件并退出窗口或 Vim :wqall :wqa[ll] 保存所有修改过的缓冲区并退出 Vim :wundo :wu[ndo] 将撤销历史写入文件 :wviminfo :wv[iminfo] 写入 viminfo 文件 :xit :x[it] 仅当缓冲区有修改时保存,然后关闭窗口 :xall :xa[ll] 同 ":wqall" :xmap :xm[ap] 显示或定义可视模式映射 :xmapclear :xmapc[lear] 清除所有可视模式映射 :xmenu :xme[nu] 显示或定义可视模式菜单 :xnoremap :xn[oremap] 定义可视模式非递归映射 :xnoremenu :xnoreme[nu] 定义可视模式非递归菜单 :xrestore :xr[estore] 恢复 X 服务器连接 :xunmap :xu[nmap] 删除可视模式映射 :xunmenu :xunme[nu] 删除可视模式菜单 :yank :y[ank] 抽出范围行到指定寄存器 :z :z 显示包围指定范围的若干上下文行 :~ :~ 重复上一次 ":substitute" vim:tw=78:ts=8:noet:ft=help:norl: