插件相关

|快捷键|说明 |—— |,|Leader Key |<leader>n|打开 / 关闭代码资源管理器 |<leader>t|打开 / 关闭函数列表 |<leader>a|.h .cpp 文件切换 |<leader>u|转到函数声明 |<leader>U|转到函数实现 |<leader>o|打开 include 文件 |<leader>y|拷贝函数声明 |<leader>p|生成函数实现 |<leader>w|单词跳转 |<leader>f|搜索~目录下的文件 |<leader>F|搜索当前目录下的文本 |<leader>g|显示 git 仓库提交记录 |<leader>G|显示当前文件提交记录 |<leader>gg|显示当前文件在某个 commit 下的完整内容 |<leader>ff|语法错误自动修复 (FixIt) |<c-p>|切换到上一个 buffer |<c-n>|切换到下一个 buffer |<leader>d|删除当前 buffer |<leader>D|删除当前 buffer 外的所有 buffer |vim|运行 vim 编辑器时,默认启动开始页面 |<F5>|显示语法错误提示窗口 |<F7>|启用 markdown 实时预览 |<F8>|关闭 markdown 实时预览 |<F9>|显示上一主题 |<F10>|显示下一主题 |<leader>l|按竖线对齐 |<leader>=|按等号对齐 |Ya|复制行文本到字母 a |Da|剪切行文本到字母 a |Ca|改写行文本到字母 a |rr|替换文本 |<leader>r|全局替换,目前只支持单个文件 |gcc|注释代码 |gcap|注释段落 |vif|选中函数内容 |dif|删除函数内容 |cif|改写函数内容 |vaf|选中函数内容(包括函数名 花括号) |daf|删除函数内容(包括函数名 花括号) |caf|改写函数内容(包括函数名 花括号) |fa|查找字母 a,然后再按 f 键查找下一个 |<c-x><c-o>|Emoji:dog: 补全

插入模式

|快捷键|说明 |—— |i|在光标处进入插入模式 |I|在行首进入插入模式 |a|在光标后进入插入模式 |A|在行尾进入插入模式 |o|在下一行插入新行并进入插入模式 |O|在上一行插入新行并进入插入模式 |gi|进入到上一次插入模式的位置 |<esc>|退出插入模式

缓存操作

|快捷键|说明 |—— |:e <filename>|新建 buffer 打开文件 |:bp|切换到上一个 buffer |:bn|切换到下一个 buffer |:bd|删除当前 buffer

窗口操作

|快捷键|说明 |—— |:sp <filename>|横向切分窗口并打开文件 |:vsp <filename>|竖向切分窗口并打开文件 |<c-w>h|跳到左边的窗口 |<c-w>j|跳到下边的窗口 |<c-w>k|跳到上边的窗口 |<c-w>l|跳到右边的窗口 |<c-w>c|关闭当前窗口 |<c-w>o|关闭其他窗口 |:only|关闭其他窗口

光标移动

|快捷键|说明 |—— |h|上下左右移动 |j|上下左右移动 |k|上下左右移动 |l|上下左右移动 |0|光标移动到行首 |^|跳到从行首开始第一个非空白字符 |$|光标移动到行尾 |<c-o>|跳到上一个位置 |<c-i>|跳到下一个位置 |<c-b>|上一页 |<c-f>|下一页 |<c-u>|上移半屏 |<c-d>|下移半屏 |H|调到屏幕顶上 |M|调到屏幕中间 |L|调到屏幕下方 |:n|跳到第 n 行 |w|跳到下一个单词开头 (标点或空格分隔的单词) |W|跳到下一个单词开头 (空格分隔的单词) |e|跳到下一个单词尾部 (标点或空格分隔的单词) |E|跳到下一个单词尾部 (空格分隔的单词) |b|上一个单词头 (标点或空格分隔的单词) |B|上一个单词头 (空格分隔的单词) |ge|上一个单词尾 |%|在配对符间移动,可用于 ()、{}、[] |gg|到文件首 |G|到文件尾 |fx|跳转到下一个为 x 的字符 |Fx|跳转到上一个为 x 的字符 |tx|跳转到下一个为 x 的字符前 |Tx|跳转到上一个为 x 的字符前 |;|跳到下一个搜索的结果 |[[|跳转到函数开头 |]]|跳转到函数结尾

文本编辑

|快捷键|说明 |—— |r|替换当前字符 |R|进入替换模式,直至 ESC 离开 |s|替换字符(删除光标处字符,并进入插入模式,前可接数量) |S|替换行(删除当前行,并进入插入模式,前可接数量) |cc|改写当前行(删除当前行并进入插入模式),同 S |cw|改写光标开始处的当前单词 |ciw|改写光标所处的单词 |caw|改写光标所处的单词,并且包括前后空格(如果有的话) |ct,|改写到逗号 |c0|改写到行首 |c^|改写到行首(第一个非零字符) |c$|改写到行末 |C|改写到行末(同 c$) |ci"|改写双引号中的内容 |ci'|改写单引号中的内容 |ci)|改写小括号中的内容 |ci]|改写中括号中内容 |ci}|改写大括号中内容 |cit|改写 xml tag 中的内容 |cis|改写当前句子 |ciB|改写 ‘{}’ 中的内容 |c2w|改写下两个单词 |ct(|改写到小括号前 |x|删除当前字符,前面可以接数字,3x 代表删除三个字符 |X|向前删除字符 |dd|删除当前行 |d0|删除到行首 |d^|删除到行首(第一个非零字符) |d$|删除到行末 |D|删除到行末(同 d$) |dw|删除当前单词 |dt,|删除到逗号 |diw|删除光标所处的单词 |daw|删除光标所处的单词,并包含前后空格(如果有的话) |di"|删除双引号中的内容 |di'|删除单引号中的内容 |di)|删除小括号中的内容 |di]|删除中括号中内容 |di}|删除大括号中内容 |diB|删除 ‘{}’ 中的内容 |dit|删除 xml tag 中的内容 |dis|删除当前句子 |d2w|删除下两个单词 |dt(|删除到小括号前 |dgg|删除到文件头部 |dG|删除到文件尾部 |d}|删除下一段 |d{<!-- -->|删除上一段 |u|撤销 |U|撤销整行操作 |CTRL-R|撤销上一次 u 命令 |J|连接若干行 |gJ|连接若干行,删除空白字符 |.|重复上一次操作 |~|交换大小写 |g~iw|替换当前单词的大小写 |gUiw|将单词转成大写 |guiw|将当前单词转成小写 |guu|全行转为小写 |gUU|全行转为大写 |gg=G|缩进整个文件 |=a{<!-- -->|缩进光标所在代码块 |=i{<!-- -->|缩进光标所在代码块,不缩进 “{” |<<|减少缩进 |>>|增加缩进 |==|自动缩进 |CTRL-A|增加数字 |CTRL-X|减少数字 |p|粘贴到光标后 |P|粘贴到光标前 |v|开始标记 |y|复制标记内容 |V|开始按行标记 |CTRL-V|开始列标记 |y$|复制当前位置到本行结束的内容 |yy|复制当前行 |Y|复制当前行,同 yy |yt,|复制到逗号 |yiw|复制当前单词 |3yy|复制光标下三行内容 |v0|选中当前位置到行首 |v$|选中当前位置到行末 |vt,|选中到逗号 |viw|选中当前单词 |vi)|选中小括号内的东西 |vi]|选中中括号内的东西 |viB|选中 ‘{}’ 中的内容 |vis|选中句子中的东西 |gv|重新选择上一次选中的文字 |:set paste|允许粘贴模式(避免粘贴时自动缩进影响格式) |:set nopaste|禁止粘贴模式 |"?yy|复制当前行到寄存器?,问号代表 0-9 的寄存器名称 |"?p|将寄存器?的内容粘贴到光标后 |"?P|将寄存器?的内容粘贴到光标前 |:registers|显示所有寄存器内容 |:[range]y|复制范围,比如 :20,30y 是复制 20 到 30 行,:10y 是复制第十行 |:[range]d|删除范围,比如 :20,30d 是删除 20 到 30 行,:10d 是删除第十行 |ddp|交换两行内容:先删除当前行复制到寄存器,并粘贴

文件操作

|快捷键|说明 |—— |:w|保存文件 |:w <filename>|按名称保存文件 |ZZ|保存文件(如果有改动的话),并关闭窗口 |:e <filename>|打开文件并编辑 |:saveas <filename>|另存为文件 |:r <filename>|读取文件并将内容插入到光标后 |:r !dir|将 dir 命令的输出捕获并插入到光标后 |:close|关闭文件 |:q|退出 |:q!|强制退出 |:wa|保存所有文件 |:cd <path>|切换 Vim 当前路径 |:new|打开一个新的窗口编辑新文件 |:enew|在当前窗口创建新文件 |:vnew|在左右切分的新窗口中编辑新文件 |:tabnew|在新的标签页中编辑新文件

使用外部程序

|快捷键|说明 |—— |!|告诉 vim 正在执行一个过滤操作 |!5Gsort<Enter>|使用外部 sort 命令对 1-5 行文本排序 |!!|对当前行执行过滤命令 |!!date<Enter>|用 “date” 的输出代替当前行

宏录制#

|快捷键|说明 |—— |qa|开始录制名字为 a 的宏 |q|结束录制宏 |@a|播放名字为 a 的宏 |100@a|播放名字为 a 的宏 100 次 |:normal@a|播放名字为 a 的宏直到自动结束

实用命令

|快捷键|说明 |—— |/pattern|从光标处向文件尾搜索 pattern |?pattern|从光标处向文件头搜索 pattern |n|向同一方向执行上一次搜索 |N|向相反方向执行上一次搜索 |*|向前搜索光标下的单词 |#|向后搜索光标下的单词 |:s/p1/p2/g|替换当前行的 p1 为 p2 |:%s/p1/p2/g|替换当前文件中的 p1 为 p2 |:%s/<p1>/p2/g|替换当前文件中的 p1 单词为 p2 |:%s/p1/p2/gc|替换当前文件中的 p1 为 p2,并且每处询问你是否替换 |:10,20s/p1/p2/g|将第 10 到 20 行中所有 p1 替换为 p2 |:%s/1\\2\/3/123/g|将 “1\2/3” 替换为 “123”(特殊字符使用反斜杠标注) |:%s/\r//g|删除 DOS 换行符 ^M |:g/^\s*$/d|删除空行 |:g/test/d|删除所有包含 test 的行 |:v/test/d|删除所有不包含 test 的行 |:%s/^/test/|在行首加入特定字符 (也可以用宏录制来添加) |:%s/$/test/|在行尾加入特定字符 (也可以用宏录制来添加) |:sort|排序 |:g/^\(.\+\)$\n\1/d|去除重复行 (先排序) |:%s/^.\{10\}//|删除每行前 10 个字符 |:%s/.\{10\}$//|删除每行尾 10 个字符

帮助

|快捷键|说明 |—— |h tutor|入门文档 |h quickref|快速帮助 |h index|查询 Vim 所有键盘命令定义 |h summary|帮助你更好的使用内置帮助系统 |h pattern.txt|正则表达式帮助 |h eval|脚本编写帮助 |h function-list|查看 VimScript 的函数列表 |h windows.txt|窗口使用帮助 |h tabpage.txt|标签页使用帮助 |h tips|查看 Vim 内置的常用技巧文档 |h quote|寄存器 |h autocommand-events|所有可能事件 |h write-plugin|编写插件

其他

|快捷键|说明 |—— |vim -u NONE -N|开启 vim 时不加载 vimrc 文件 |vimdiff file1 file2|显示文件差异 |<leader>e|快速编辑 vimrc 文件 |<leader>s|重新加载 vimrc 文件 |<leader>h|打开 vimplus 帮助文档 |<leader>H|打开当前光标所在单词的 vim 帮助文档 |<leader><leader>i|安装插件 |<leader><leader>u|更新插件 |<leader><leader>c|删除插件

--完--