vim四种模式分别为普通模式、命令模式、编辑模式、视图模式
| 键位 | 作用 |
|---|---|
| j | 向下移动光标 |
| k | 向上移动光标 |
| h | 向左移动光标 |
| l | 向右移动光标 |
| 0 | 移动行首 |
| ^ | 移动行首第一个非空白字符 |
| $ | 移动行尾 |
| g_ | 移动到行尾非空白字符 |
| w/W | 正向移动到下一个单词词首 |
| b/B | 反向移动到上一个单词词首 |
| e/E | 正向移动到下一个单词词尾 |
| ge | 反向移动到上一个单词词首 |
| ctrl+f(forward) | 向下翻页 |
| ctrl+b(back) | 向上翻页 |
| ctrl+d | 向下翻半页 |
| ctrl+u | 向上翻半页 |
| zz | 把屏幕至于中间 |
| H/M/L | 跳转到文本开头/中间/结尾 |
| gg | 回到第一行行首 |
| 数字+gg/G | 移动到指定行行首 |
| G | 移动到最后一行行首 |
| g+ctrl+g | 光标所在行信息 |
| j+ctrl+g | 获取文件名所在行数 |
| >>/:> | 右缩进 |
| <</:< | 左缩进 |
| m,n>/:m>(n-m+1) | m到n行右缩进 |
| >+数字 | 当前光标下几行进行缩进 |
| :m>n | 指定m位置下n行进行缩进 |
| dd | 剪切整行 |
| yy | 复制整行 |
| p/P | 粘贴 |
| u | 撤销 |
| ctrl+r | 重做/恢复之前操作 |
| yw | 当前光标单个单词 |
| y+数字+w | 复制正向多个单词 |
| x/X | 剪切当前字符/剪切前一个字符 |
| dw | 删除一个单词 |
| dj | 删除当前行以及下一行 |
| dk | 删除当前行以及上一行 |
| dh | 删除前一个字符 |
| dl | 删除当前字符 |
| d$/D | 删除光标到行尾字符 |
| d^ | 删除光标当行首字符 |
| 数字+dd | 删除向下几行 |
| m+d+w | 删除正向单词m次 |
| d+n+w | 正向删除nw动作 |
| m+d+n+w | 正向删除nw动作m次 |
| 数字+w | 正向移动几个单词 |
| shift+i/A | 插入行首/行尾 |
| i | 光标前插入 |
| a | 光标后插入 |
| o/O | 下一行/上一行插入 |
| 数字+o | 向下插入几行 |
| ~ | 当个字符大小写转换 |
| g~W | 单词大小写转换 |
| g |
整行大小写转换 |
| g+U/u+w | 单词转换成大/小写 |
| g+U/u+n | 转换大/小写n行 |
| . | 重复上一个操作 |
| F/f{char} | 当前行反向/正向查找单个字符,;匹配下一个字符 |
| t{char} | 查找到前一个字符,;匹配下一个字符 |
| df{space} | 当前光标到一个单词词首的所有字符 |
| /{char} | 全局搜索(n下一个,N上一个) |
| :s/原/替/g | 当前行所有目标替换 |
| :%s/原/替/g | %匹配所有范围 |
| shift+r | 当前行进行替换 |
| r | 对单个字符替换 |
| cw | 修改单个单词 |
| c$/C | 修改光标之后行内内容 |
| c+数字+w | 修改多个单词 |
| :files/buffers/ls | 查看缓冲区 |
| :bp[previous] | 上一个缓冲区 |
| :bn[next] | 下一个缓冲区 |
| :bf[first] | 到第一个缓冲区 |
| :bl[last] | 到最后一个缓冲区 |
| :b Number/File_name | 指定缓冲区 |
| :ball | 编辑所有缓冲区(:qall退出所有) |
| Ctrl+^/b# | 切换到前一个buffer(交换buffer) |
| badd | 打开新缓冲区 |
| bd | 删除缓冲区 |
| %bd | 删除所有缓冲区 |
| :bufdo set number? | 查看所有缓冲区是否设置number |
| vim -O/on | 水平/垂直分屏,n:数字,o:Open |
| ctrl+w c/q | 关闭当前窗口/最后一个窗口时退出 |
| ctrl+w s | 上下分割当前打开的文件 |
| :sp filename | 上下分割,并打开一个新的文件 |
| :vs filename | 左右分割,并打开一个新的文件 |
| ctrl+w v | 左右分割当前打开的文件 |
| :vsp filename | 左右分割,并打开一个新的文件 |
| ctrl+w K | 光标移动上一个分屏 |
| ctrl+w J | 光标移动下一个分屏 |
| ctrl+w L | 光标移动右一个分屏 |
| ctrl+w H | 光标移动左一个分屏 |
| ctrl+w+ | 增加当前光标所在屏高度 |
| ctrl+w- | 减少当前光标所在屏高度 |
| ctrl+w= | 让所有屏的高度一致 |
| :tabnew | 新建标签页 |
| :tabfind | 查找并在新标签页中打开文件 |
| :tabs | 显示已打开标签页的列表 |
| :tabclose | 关闭当前标签页 |
| :tabonly | 仅保留当前标签页打开 |
| :tabn/p/first/last | 移动到下/上/第一/最后一个标签页 |
| gt/T | 移动到下/上一个标签 |
| {i}gt | 移动到i位置的标签 |
| :tabe | 编辑标签中的某个文件 |
| :tabm 0/tabm | 移动当前tab到第一个/最后一个 |
| :tabm{i} | 移动当前tab到i+1位置 |
| qa | 开始录制宏存到寄存器a中 |
| qA | 追加宏在a寄存器中追加 |
| n@a | 执行n遍a寄存器中的操作 |
| @@ | 再执行一遍上一次操作 |
| :n,mnormal @a | n到m行执行寄存器a宏操作 |
| :let @a=’ | 编辑宏a寄存器 |
| v | 激活面向字符的可视化模式 |
| V/shift+v | 激活面向行的可视化模式 |
| Ctrl+v | 激活面向列块的可视化模式 |
| gv | 重选上次的高亮选区 |
| o | 切换选取边界 |
| ctrl+h | 插入模式删除上一个字符 |
| ctrl+w | 插入模式删除上一个单词 |
| ctrl+u | 插入模式删除当前行 |
| gi | 快速移动到之前光标所在位置并进入插入模式 |
| **** | |
| **** | |
| **** | |
| **** | |
| **** | |
| **** | |
| **** | |
| **** | |
| **** | |
| **** |