C

CODER TOOLS

Vim指令速查表

光标移动、编辑操作、窗口管理与插件快捷键一站式速查

560 条指令
光标移动
光标左移,同 <Left> 键
光标下移,同 <Down> 键
光标上移,同 <Up> 键
光标右移,同 <Right> 键
下一页
上一页
上移半屏
下移半屏
跳到行首(数字零,不是字母O),等同 <Home>
跳到行首第一个非空白字符
跳到行尾,等同 <End>
跳到第一行,等同 CTRL+<Home>
跳到最后一行,等同 CTRL+<End>
跳到第n行,比如 10G
跳到第n行,比如 :10<回车>
移动到文件 10% 处
移动到当前行的第 15 列
跳到下一个单词开头(word)
跳到下一个单词开头(WORD)
跳到下一个单词尾部(word)
跳到下一个单词尾部(WORD)
上一个单词头(word)
上一个单词头(WORD)
上一个单词尾
向前移动一个句子(句号分隔)
向后移动一个句子(句号分隔)
向前移动一个段落(空行分隔)
向后移动一个段落(空行分隔)
移动到下一行首个非空字符
移动到下一行首个非空字符(同回车键)
移动到上一行首个非空字符
移动到屏幕上部
移动到屏幕中部
移动到屏幕下部
跳转到下一个为 x 的字符
跳转到上一个为 x 的字符
跳转到下一个为 x 的字符前
跳转到上一个为 x 的字符前
跳到下一个 f/t 搜索的结果
跳到上一个 f/t 搜索的结果
向左移动一个单词
向右移动一个单词
向上翻页
向下翻页
移动到行中
光标下移一行(忽略自动换行)
光标上移一行(忽略自动换行)
插入模式:进入退出
在光标处进入插入模式
在行首进入插入模式
在光标后进入插入模式
在行尾进入插入模式
在下一行插入新行并进入插入模式
在上一行插入新行并进入插入模式
进入到上一次插入模式的位置
退出插入模式
退出插入模式(同 ESC)
INSERT MODE由 i, I, a, A, o, O 等进入插入模式后
光标向上移动
光标向下移动
光标向左移动
光标向右移动
向左移动一个单词
向右移动一个单词
向上翻页
向下翻页
上翻页
下翻页
删除光标处字符
Backspace 向后删除字符
光标跳转行首
光标跳转行尾
向前删除单词
临时退出插入模式,执行单条命令又返回
临时退出插入模式(光标保持)
插入寄存器 0 号剪贴板内容
插入匿名寄存器内容(同插入模式下 p)
插入表达式计算结果
插入上一次命令行命令
插入上一次搜索关键字
自动缩进
删除当前行所有字符
插入非数字的字面量
插入三个数字代表的 ascii/unicode 字符
插入 10 进制 ascii 字符(两数字)
插入 16 进制 ascii 字符(三数字)
插入 8 进制 ascii 字符(三数字)
插入 16 进制 unicode 字符(四数字)
插入 16 进制 unicode 字符(八数字)
插入 digraph
文字向前缩进
文字向后缩进
文本编辑
替换当前字符
进入替换模式,直至 ESC 离开
替换字符并进入插入模式(可接数量)
替换行并进入插入模式
改写当前行(同 S)
改写光标开始处的当前单词
改写光标所处的单词
改写单词并包含前后空格
改写到行首
改写到行首第一个非空字符
改写到行末
改写到行尾(同 c$)
改写双引号中的内容
改写单引号中的内容
改写小括号中的内容
改写小括号中的内容(含括号)
改写小括号中的内容
改写中括号中内容
改写大括号中内容
改写大括号中内容(含括号)
改写大括号中内容
改写 XML tag 中内容
改写当前句子
改写下两个单词
改写到小括号前
改写到光标后的第一个 apple 前
删除当前字符(可接数量)
向前删除字符
删除当前行
删除到行首
删除到行首第一个非空字符
删除到行末
删除到行末(同 d$)
删除当前单词
删除光标所处的单词
删除单词并包含前后空格
删除双引号中的内容
删除单引号中的内容
删除小括号中的内容
删除小括号中的内容
删除小括号内内容(含括号)
删除中括号中内容
删除大括号中内容
删除大括号中内容
删除大括号内内容(含括号)
删除 XML tag 中内容
删除当前句子
删除当前段落(前后空白行)
删除当前段落(含空白行)
删除下两个单词
删除到小括号前
删除到光标后的第一个 apple 前
删除到文件头部
删除到文件尾部
删除下一段
删除上一段
撤销
撤销整行操作
撤销上一次 u 命令
链接多行为一行
重复上一次操作
替换大小写
替换当前单词大小写
将单词转成大写
将单词转成小写
全行转为小写
全行转为大写
减少缩进
增加缩进
自动缩进
增加数字
减少数字
复制粘贴
粘贴到光标后
粘贴到光标前
开始标记
复制标记内容
开始按行标记
开始列标记
复制当前位置到本行结束的内容
复制当前行
复制当前行,同 yy
复制当前单词
复制光标下三行内容
选中当前位置到行首
选中当前位置到行末
选中当前单词
选中小括号内
选中小括号内
选中中括号内
选中大括号内
选中大括号内
选中句子中的东西
选中当前段落(前后空白行)
选中当前段落(含空白行)
选中小括号内(含括号)
选中小括号内(含括号)
选中中括号内(含括号)
选中大括号内(含括号)
选中大括号内(含括号)
重新选择上一次选中的文字
允许粘贴模式(避免缩进影响)
禁止粘贴模式
复制当前行到寄存器 ?(0-9)
删除三行并放到寄存器 ?(0-9)
将寄存器 ? 内容粘贴到光标后
将寄存器 ? 内容粘贴到光标前
显示所有寄存器内容
复制范围,如 :20,30y 或 :10y
删除范围,如 :20,30d 或 :10d
交换两行内容
删除但不复制(不污染寄存器)
复制到系统剪贴板(需 clipboard 支持)
文本对象c,d,v,y 等命令后接文本对象:<范围 i/a><类型>
到行末
到行首
到行首非空字符
光标位置到字符 x 之前
光标位置到字符 x 之处
整个单词(不含分隔符)
整个单词(含分隔符)
整个 WORD(不含分隔符)
整个 WORD(含分隔符)
整个句子(不含分隔符)
整个句子(含分隔符)
整个段落(不含前后空白行)
整个段落(含前后空白行)
小括号内
小括号内(含括号)
大括号内
大括号内(含括号)
小括号内
小括号内(含括号)
中括号内
中括号内(含括号)
大括号内
大括号内(含括号)
单引号内
单引号内(含引号)
双引号内
双引号内(含引号)
往外两层小括号内
往外两层小括号内(含括号)
到第二个小括号处
到第二个小括号前
查找替换
从光标处向文件尾搜索 pattern
从光标处向文件头搜索 pattern
向同一方向执行上一次搜索
向相反方向执行上一次搜索
向前搜索光标下的单词
向后搜索光标下的单词
将当前行中全替换 p1 为 p2
将当前文件中全替换 p1 为 p2
全替换并逐处确认
替换第10到20行中的 p1
替换当前行到 n 行
替换当前行到当前行+10行
替换当前行到最后一行
替换第一行到当前行
替换“1\2/3”为“123”
删除 DOS 换行符 ^M
VISUAL MODE由 v, V, CTRL-V 进入的可视模式
增加缩进
减少缩进
删除高亮选中的文字
删除高亮选中的文字
改写文字并进入插入模式
改写文字并进入插入模式
拷贝文字
转换大小写
跳转到标记区的另外一端
跳转到标记块的另外一端
标记区转换为小写
标记区转换为大写
显示所选择区域的统计信息
退出可视模式
位置跳转
跳转到上一个位置
跳转到下一个位置
跳转到 alternate file(上一个文件)
跳转到光标下文字的超链接
返回到跳转之前的位置
跳转到 {} () [] 的匹配
跳转到局部定义
跳转到全局定义
打开光标下文件名对应文件
跳转到上一个顶层函数
跳转到下一个顶层函数
跳转到上一个成员函数
跳转到下一个成员函数
跳转到上一处未匹配的 {
跳转到下一处未匹配的 }
跳转到上一处未匹配的 (
跳转到下一处未匹配的 )
上一个不同处(diff)
下一个不同处(diff)
跳转到 C 注释开头
跳转到 C 注释结尾
回到上次跳转的位置
回到上次跳转的位置
回到上次编辑的位置
回到上次编辑的位置
文件操作
保存文件
按名称保存文件
打开文件并编辑
另存为文件
读取文件并插入到光标后
将 dir 输出捕获并插入
关闭文件
退出
强制退出
保存所有文件
切换 Vim 当前路径
显示 Vim 当前路径
新窗口编辑新文件
当前窗口创建新文件
左右切分新窗口
新标签页中编辑新文件
已打开文件操作
查看缓存列表
切换到下一个缓存
切换到上一个缓存
删除缓存
切换到 1 号缓存
切换到文件名 abc 开头的缓存
将文件添加到缓存列表
开启隐藏模式
关闭隐藏模式
按编号切换缓存
窗口操作
上下切分窗口打开文件
左右切分窗口打开文件
上下切分窗口
左右切分窗口
切换到下一个窗口
切换到上一个窗口
跳到上一个访问过的窗口
关闭当前窗口
关闭其他窗口
跳到左边窗口
跳到下边窗口
跳到上边窗口
跳到右边窗口
增加当前窗口行高
减少当前窗口行高
减少当前窗口列宽
增加当前窗口列宽
让所有窗口宽高相同
移动当前窗口到最左
移动当前窗口到最下
移动当前窗口到最上
移动当前窗口到最右
交换窗口
新窗口打开光标下文件名
新标签页打开光标下文件名
旋转窗口
当前窗口移到新标签页
跳转到预览窗口
关闭预览窗口
纵向最大化当前窗口
横向最大化当前窗口
标签页
显示所有标签页
新标签页打开文件
下一个标签页
上一个标签页
关闭当前标签页
关闭其他标签页
切换到第 n 个标签页
标签移动
切换到第一个标签页
切换到最后一个标签页
在标签页打开帮助
若已打开则跳过去,否则新开
新标签页打开当前窗口文件
将缓存中所有文件用标签页打开
设置标签页显示规则
切换到第 n 个标签页,如 2gt
下一个标签页
上一个标签页
书签
显示所有书签
保存当前位置到书签 a
跳转到书签 a 所在行
跳转到书签 a 所在位置
跳转到上一次编辑的行
跳转到全文书签 A
跳转到上一个书签
跳转到下一个书签
跳到上次可视模式选择区域开始
跳到上次可视模式选择区域结束
删除缓冲区书签 a
删除文件书签 A
删除所有缓冲区书签(小写)
删除所有文件书签(大写)
删除所有数字书签
删除所有文件和数字书签
常用设置
不兼容原始 vi 模式
设置 BS 键模式
设置缩进宽度为 4
设置制表符宽度为 4
不展开 tab 成空格
展开 tab 成空格
GVim 下捕获 ALT 键
关闭自动换行
允许终端按键检测超时
终端按键检测超时 100ms
设置终端类型
搜索忽略大小写
搜索区分大小写
智能大小写
显示制表符和换行符
显示行号
显示相对行号
进入粘贴模式
结束粘贴模式
允许拼写检查
高亮查找
总是显示光标位置
动态增量搜索
Vim 始终处于插入模式
列出所有选项设置情况
允许语法高亮
禁止语法高亮
帮助信息
入门文档
快速帮助
查询所有键盘命令定义
帮助你更好使用内置帮助
查询普通模式下 CTRL-H
查询插入模式下 CTRL-H
查询插入模式方向键上
正则表达式帮助
脚本编写帮助
查看 VimScript 函数列表
窗口使用帮助
标签页使用帮助
显示 +timers 特性帮助
查看如何运行外部命令
查看 Vim 内置常用技巧文档
查看按键扫描码设置
NORMAL 模式帮助
EX 命令帮助
显示 Vim 版本号和特性
外部命令
运行外部命令 ls 并等待返回
将外部命令输出插入到光标后
sudo 后保存当前文件
调用 ls 命令但不显示返回内容
Windows 下启动 notepad
Windows 下当前目录打开 cmd
运行文字过滤程序
Quickfix 窗口
打开 quickfix 窗口
打开 quickfix 窗口并设高 10
关闭 quickfix 窗口
跳到第一个错误信息
跳到最后一条错误信息
查看错误 [nr]
跳到下一个错误信息
跳到上一个错误信息
拼写检查
打开拼写检查
关闭拼写检查
下一处错误拼写的单词
上一处错误拼写的单词
加入单词到拼写词表中
撤销上一次加入的单词
拼写建议
代码折叠
切换折叠
递归切换折叠
折叠光标下代码
折叠光标下所有代码
删除光标下折叠
递归删除所有折叠
删除所有折叠
创建代码折叠
指定行数创建折叠
切换折叠
所有代码折叠一层
所有代码打开一层
折叠所有代码
打开所有代码
折叠 none,重置 foldenable
折叠 normal,恢复所有折叠
打开一层代码
打开光标下所有折叠
宏录制
开始录制名字为 a 的宏
结束录制宏
播放名字为 a 的宏
播放上一个宏
重复上一个 ex 命令
其他命令
插入模式下文件路径补全
插入 Omnifunc 补全
插入模式下关键字补全
插入模式下向上滚屏
插入模式下向下滚屏
向上滚屏
向下滚屏
显示文件名、大小和位置信息
显示文件大小、字符数、单词数和行数
光标行置中
光标行置顶
光标行置底
显示光标下字符的 ascii/unicode
显示光标下字符的 utf-8 字节序
回到上次进入插入的地方并切换
查询光标下单词的帮助
保存并关闭窗口
不保存关闭窗口
上个标签页(GVim)
下个标签页(GVim)
命令模式插入光标下单词
复制到系统剪贴板(GVim)
粘贴系统剪贴板内容(GVim)
设置换行为 unix
设置换行为 dos
查看换行设置
清除搜索高亮
查看终端收发命令
解决 NeoVim 局部奇怪字符
解决 Vim8 终端功能奇怪字符
实时自动格式化文本段
回退到 15 分钟前内容
插入当前时间
开始二进制编辑
保存二进制编辑
读取 url 内容添加到光标后
删除空行
删除包含 green 的行
删除不包含 green 的行
搜索单词并打印结果
搜索包含 ab/cd/efg 的行
压缩空行
Vim 中查看 man(先激活插件)
搜索 fred 或 joe
精确搜索四个数字
搜索连续三个空行
Plugin - vim-commentary
注释当前行
注释 {motion} 区域,如 gcap
注释大括号内内容
可视模式下注释选中区域
注释 7 到 17 行
Plugin - vim-easy-align
以第一个匹配的 = 为中心对齐
匹配并对齐所有 =
Plugin - vim-unimpaired
向上插入空行
向下插入空行
替换当前行和上一行
替换当前行和下一行
XML 编码
XML 解码
URL 编码
URL 解码
C 字符串编码
C 字符串解码
上一个 quickfix 错误
下一个 quickfix 错误
第一个 quickfix 错误
最后一个 quickfix 错误
切换同目录上一个文件
切换同目录下一个文件
设置 :set spell
设置 :set nospell
设置 :set invspell
显示行号
关闭行号
显示回车和制表符
不显示回车和制表符
缓存切换到上一个文件
缓存切换到下一个文件
缓存切换到第一个文件
缓存切换到最后一个文件
Plugin - asyncrun.vim
异步运行命令 ls,输出到 quickfix
输出不匹配 errorformat
Plugin - vim-textobj-argument
改写函数参数
改写函数参数(含逗号分隔)
删除函数参数
删除函数参数(含逗号分隔)
选取函数参数
选取函数参数(含逗号分隔)
复制函数参数
复制函数参数(含逗号分隔)

常用技巧

  • 永远不要用 CTRL-C 代替 <ESC>,含义不同,可能中断后台脚本
  • 很多人用 CTRL-[ 代替 <ESC>,左手 CTRL 右手 [ 更顺手
  • 终端里 Vim 8 内嵌终端如看到奇怪字符,使用 :set t_RS= t_SH=
  • 终端里 Vim 8.2+ 如看到奇怪字符,使用 :set t_TI= t_TE=
  • NeoVim 如看到奇怪字符,使用 :set guicursor=
  • MS-Terminal 进入 Vim/NVim 默认替换模式::set t_u7=
  • 多用 ciw/ci[/ci"/ci( 与 diw/di[/di"/di( 进行快编
  • 行内移动多用 w b e 或 W B E,不要只用 h l/方向键
  • SHIFT 是移动加速键,W B E 走得更快
  • 用 0w 比 ^ 更容易移动到行首非空字符
  • 空白行使用 dip 可删除临近空白行,viw 选择连续空白
  • 缩进时使用 >8j >} <ap >ap =i} == 更方便
  • 插入模式下写错单词,CTRL-W 比 <BackSpace> 快
  • y d c 可结合 f t 和 /X,例如 dt) 和 y/end<cr>
  • c d x 会填充寄存器 "1 到 "9,y 填充 "0
  • v 选择文本时,可用 o 掉头选择
  • 写文章时可选中代码块执行 :!python 直接替换为结果
  • 搜索后常用 :nohl 清除高亮,可 map 到 <BackSpace>
  • 搜索可用 CTRL-R CTRL-W 插入光标下单词
  • 映射按键应优先使用 noremap
  • 感觉效率低时,先 u u u u 再思考更高效方式
  • y 复制文本后,命令模式 CTRL-R 再按 0 可插入复制内容
  • 某些情况下高亮慢可试试 set re=1 使用老正则引擎
  • Windows 下 GVim 可设置 set rop=type:directx,renmode:5