| Vim 命令小抄 | original card by Laurent Gregoires redesign by brohan | ||||||
| 基本移动 |  | 插入模式 |  | 撤消,重做 | |||
|  |  | ||||||
| h l j k | 左/右 移动一个字符;上/下 移动一行 |  | ^Vc ^Vn | 插入字符 c 的本义/十进制值 n |  | u U | 撤销最近的改动 / 恢复最近被改动的行 | 
| b w | 向 左/右 移动一个单词 |  | ^A | 插入最近插入的文本 |  | . ^R | 重复最近的改动 / 重做最近撤销的改动 | 
| ge e | 向 左/右 移动一个单词(光标在词尾) |  | ^@ | 插入最近插入的文本,并退出插入模式 |  | n. | 重复最近的改动 n 次 | 
| { } | 移动到 前一个/后一个 段落开头 |  | ^Rx | 原样插入寄存器 x 的内容 |  | 寄存器 | |
| ( ) | 移动到 前一个/后一个 句子开头 |  | ^N ^P | 补全关键字并作 正向/反向 查找 |  | ||
| 0 gm | 移动到 行首/行正中 |  | ^W | 删除光标前的单词 |  | qc qC | 记录键入的字符,存入/添加到 寄存器 c | 
| ^ $ | 移动到行 第一个非空白字符/行尾 |  | ^U | 删除当前行光标前所有输入的字符 |  | q | 停止记录 | 
| nG ngg | 移动到第 n 行,默认到 尾行/首行 |  | ^D ^T | 左移/右移 一个缩进位 |  | @c | 执行寄存器 c 的内容 | 
| n% | 移动到文件的 n 百分比处 |  | ^KC1C2 | 输入 \C1,C2\ 代表的二合字母 |  | @@ | 重复上次的 @c 操作 | 
| n| | 移动到当前行的第 n 列 |  | ^Oc | 在临时命令模式执行命令 c |  | :@c | 将寄存器 c 的内容当作 Ex 命令来执行 | 
| nH nL | 移动到窗口 顶端/底部 第 n 行 |  | ^X^E | 向上滚动一行 |  | :rg/p/c | 在范围 r 中找到匹配内容 p 时执行 Ex 命令 c | 
| % | 匹配下一个项目(括号、方括号等……) |  | ^X^Y | 向下滚动一行 |  | 复合移动 | |
| M | 移动到窗口的中间行 |  | <esc> ^[ | 结束插入模式,回到命令模式 |  | ||
| 编辑修改 |  | 复制 |  | - + | 上移/下移 一行,至第一个非空白字符 | ||
|  |  | B W | 向 前/后 移动一个字串 | ||||
| i a | 在光标 前/后 插入文本 |  | "x | 指定下次删除、抽出和放置使用寄存器 x |  | gE E | 向 前/后 移动一个字串(光标在末尾) | 
| I A | 在 行首/行尾 插入文本 |  | :reg | 显示所有寄存器的内容 |  | n_ | 下移 n-1 行,至第一个非空白字符 | 
| gI | 在第一列插入文本 |  | :reg x | 显示寄存器 x 的内容 |  | g0 | 移动到屏幕行第一个字符 | 
| o O | 在光标的 下方/上方 插入新行 |  | ym | 抽出动作 m 跨越的文本 |  | g^ g$ | 移动到屏幕行 第一个非空白字符/最后一个字符 | 
| rc | 把光标下的字符换成 c |  | yy or Y | 抽出整 行 |  | gk gj | 上移/下移 一个屏幕行 | 
| grc | 类似 r,但替换的是虚拟字符 |  | p P | 放置寄存器内容到光标 之后/之前 |  | fc Fc | 移动到 后一个/前一个 字符 c 处 | 
| R | 进入替换模式 |  | ]p [P | 类似 "p" "P",但调整当前行的缩进 |  | tc Tc | 移动到 后一个/前一个 字符 c 之前 | 
| gR | 类似 R,但替换的是虚拟字符 |  | gp gP | 类似 "p" "P",光标停留在新文本之后 |  | ; , | 正向/反向 重复上次 "f"、"F"、"t" 或 "T" 命令 | 
| cm | 更改动作 m 跨越的文本 |  | 复杂改动 |  | [[ ]] | 向后/向前 一小节,置于小节的开始 | |
| CC or S | 更改当前行的内容 |  |  | [] ][ | 向后/向前 一小节,置于小节的末尾 | ||
| C | 更改光标到行尾的文本 |  | g?m | 对动作 m 跨越的文本做 rot13 编码 |  | [( ]) | 向后/向前 至未闭合的 '(' / ')' | 
| s | 更改一个字符并进入插入模式 |  | n^A n^X | 光标之上或之后的数值或者字母 +n/-n |  | [{ ]} | 向后/向前 至未闭合的 '{' / '}' | 
| ~ | 切换当前字符大小写,同时光标前移 |  | gqm | 格式化动作 m 跨越的所有行 |  | [m ]m | 向后/向前 至java method的开始 | 
| g~m | 切换动作 m 跨越文本的大小写 |  | :rce w | 将范围 r 中的行依据宽度 w 居中对齐 |  | [# ]# | 向后/向前 至未闭合的 #if, #else, #endif | 
| gum gUm | 小写/大写 动作 m 跨越的文本 |  | :rle i | 将范围 r 中的行靠左对齐,缩进 i 列 |  | [* ]* | 向后/向前 至注释的 开始/结束 /* */ | 
| <m >m | 左移/右移 动作 m 跨越的行 |  | :rri w | 将范围 r 中的行依据宽度 w 靠右对齐 |  | 查找替换 | |
| n<< n>> | 将 n 行 左移/右移 一个缩进位 |  | !mc | 将动作 m 跨越的行用命令 c 过滤 |  | ||
| 删除 |  | n!!c | 将 n 行用命令 c 过滤 |  | /s ?s | 向前/向后 查找 s | |
|  | :r!c | 将范围 r 中的行用命令 c 过滤 |  | /s/o ?s/o | 向前/向后 查找 s,光标偏移量 o | ||
| x X | 删除光标 后/前 的字符 |  | 可视模式 |  | n or / | 向前重复上次查找 | |
| dm | 删除动作 m 跨越的文本 |  |  | N or ? | 向后重复上次查找 | ||
| dd D | 删除 当前行/到行尾 |  | v V | 以 字符/行 方式开始(结束)高亮 |  | # * | 向后/向前 查找光标下的标识符 | 
| J gJ | 连接两行 删除缩进、插入空格/直接连接 |  | ^V | 以列块方式开始(结束)高亮 |  | g# g* | 同 "#" / "*",但也查找部分匹配 | 
| :rd | 删除范围 r 包括的行 |  | o | 交换高亮区域的开始处和光标位置 |  | gd gD | 跳转到光标下标识符的 局部/全局 声明 | 
| :rdx | 删除范围 r 包括的行到寄存器 x |  | gv | 使用上一次的可视区域开始高亮 |  | :rs/f/t/x | 将范围 r 中的 f 替换成 t 选项 x: g-所有匹配项, c-确认替换 | 
|  |  |  | aw as ap | 选择 "一个单词" / "一个句子" / "一个段落" |  | ||
|  |  |  | ab aB | 选择 "一个块" ( ) / "一个大块" { } |  | :rs x | 在新的范围 r 中以选项 x 重复上一替换 | 
转载于:https://www.cnblogs.com/ptfree/articles/1224931.html