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行 | |
r 文件名 | 将(文件名)指定的文件中的内容导入到正在编辑的文件 | |
r !命令 | 将命令的执行结果导入到正在编辑的文件中 |
例如: r !date [将当前时间导入文件] |
ab str1 str2 | 指定别名[系统重启后会失效] |
在末行模式指定别名后,在输入模式中输入str1,会自动显示成str2 |