vi/vim 共分为三种模式,分别是:
- 命令模式(Command mode)
- 输入模式(Insert mode)
- 底线模式(Last line mode)
vi进入文件后默认是命令模式,命令模式下输入“i”进入输入模式,命令模式下输入“:”进入底线模式,输入模式和底线模式下按“ESC”回到命令模式。
1、命令模式下的常用命令:
1、光标移动
hjkl,方向键移动一位,hjkl代表左、下、上、右
数字0 移至本行开头
^ 移至本行第一个非空字符,匹配开头
$ 移至本行结尾,可以包含空格
1G 移至第1行
G 移至光标最后一行
n+ 向下跳n行
n- 向上跳n行
注意:许多vi的命令前面都可以缀上数字,前缀数字可以控制该命令执行的次数,比如5j可以使得光标向下移动5行。
2、剪切、复制和粘贴
y0 当前字符到当前行的行首
y^ 当前字符到当前行首个非空字符
y$ 当前字符到当前行的末尾
yw 当前字符到下一单词的起始处
yy 复制当前行
5yy 向下复制当前行在内的5行
yG 当前行到文件末尾
y20G 当前行到文件第20行(用法和d完全一样,d实际就是剪切)
P(大写) 粘贴到当前行前面(上方)
p(小写) 粘贴到当前行后面(下方)
O 当前行上方插入新行并进入插入模式
o 当前行下方插入新行并进入插入模式
注意:大写一般表示在当前行之前进行操作,小写表示在当前行之后操作
3、删除和撤销
x 删除当前字符(剪切)
nx 向后删除当前行在内的n个字符(剪切)
dd 删除(剪切)当前行
ndd 向下删除当前行在内的n行(剪切)
dW 删除当前字符到下一单词的起始处(删除整个单词)
d$ 删除当前字符到当前行的末尾(剪切)
d0 删除当前字符到当前行的起始处(剪切)
d^ 删除当前字符当当前行下一个非空字符(剪切)
dG 删除当前行到文件末尾(剪切)
d20G 删除当前行到文件第20行(d与定位符结合使用,x不行)(剪切)
u 撤销上一次操作
Ctrl + r
重做上一个动作
. 重复前一个动作
注意:x和d键实质上是剪切键,两者功能略有差异。y是复制键,p是粘贴键。
2、底线模式下保存
w 保存文件但不退出vi命令
q 不保存直接退出文件
q! 放弃修改并强制退出
wq 保存并退出文件
w file1 文件另存为file1