0 注意事项
命令要区分大写
1 linux进入VIM模式
vi filename
2 VI的三种模式
2.1 输入模式(INSERT MODE): 用来输入文本
2.2 命令模式(COMMAND MODE):用来输入各种操作命令(处理文本的命令,例如:复制、粘贴等)
2.3 末行模式 :用于操作软件(例如:保存、退出软件等)
3 VI模式之间的切换
3.1 命令模式 --- > 输入模式
| 快捷键 | 功能 | 备注 |
| i | 在当前字符前面进入输入模式 | insert |
| I | 在当前行前面进入输入模式 | |
| o | 在下一行插入,并进入输入模式 | open(打开新的一行) |
| O | 在上一行插入,并进入输入模式 | |
| a | 在当前字符后面进入输入模式 | append(追加) |
| A | 在当前行后面进入输入模式 |
3.2 命令模式 --- > 末行模式
| 快捷键 | 功能 | 备注 |
| : | 进入末行模式 | 只能由命令模式进入 |
3.3 输入/末行模式 --- > 命令模式
| 快捷键 | 功能 | 备注 |
| ESC键 | 进入命令模式 | 输入模式和末行模式都是通过该方式进入命令模式 |
3.4 模式转换图

4 命令模式
| 快捷键 | 功能 | 备注 |
| h | 左 | |
| j | 下 | |
| k | 上 | |
| l | 右 | |
| dd | 剪切一行 | |
| dG | 删除光标所在行以后的所有内容(包括光标所在行) | |
| dnG | 从光标所在行删除到第n行 | |
| G | 光标定位到最后一行 | |
| nG | 光标定位到第n行 | |
| gg | 光标定位到第一行 | |
| $ | 光标定位到行尾 | |
| 0 | 光标定位到行首 | |
| dw | 删除一个单词 | 以空格或逗号区分单词 |
| d^ | 删除光标到行首的所有字符(不包含光标选中的字符) | 只针对光标所在行 |
| d$ | 删除光标到行尾的所有字符(包含光标选中的字符) | |
| D | ||
| r | 替换光标选中的字符(输入替换字符后自动进入输入模式) | |
| R | 替换光标选中的字符(一直停留在替换模式,直到点击ESC键) | |
| x | 删除光标选中的字符 | |
| nx | 删除光标后面的连续n个字符(包含光标选中的字符) | |
| yy | 复制光标所在行 | |
| nyy | 复制光标所在行之后的n行(包含光标所在行) | |
| p | 粘贴到下一行 | |
| P | 粘贴到上一行 | |
| np | 粘贴n遍 | |
| u | 撤销上一次操作 |
5 末行模式
| 快捷键 | 功能 | 备注 |
| q! | 不保存退出 | |
| wq/x | 保存并退出 | |
| w | 保存 | |
| %s/src/target/g | 将所有的src替换成target | %:全篇内容 s:字符串 |
| i.js/src/tarfet/g | 将第i行到第j行的所有src替换成target | |
| set number | 显示行号 | |
| set nonumber | 隐藏行号 | |
| n | 将光标定位到第n行 | |
| m,nd | 删除第m行到第n行 |
原文:https://www.cnblogs.com/BlueStarWei/p/9732820.html