编辑模式下
i 从光标所在位置前开始插入文本
I 将光标移动到当前行行首,然后在其前插入文本
a 用于在光标当前所在位置之后追加新文本
A 将光标移动到所在行行尾,在那里插入新文本
o 在光标所在行的下面新开一行,并将光标置于行首,等待输入文本
O 在光标所在行的上面插入一行,并将光标置于行首,等待输入文本
G 将光标移动到文件最后一行
rc 用字符c替换光标所指向的渌前字符
nrc 用字符c替换光标所指向的前n个字符
x 删除光标处的字符
nx 删除从光标所在位置开始向右的n个字符
dw 删除一个单词。若光标个在某个单词中间,则从光标所在位置开始删至词尾并连同空格
ndw 删除n个指定的单词
db 删除光标所在位置之前的一个词
ndb 删除光标所在位置之前的n个词
dd 删除当前行
ndd 删除当前行及向后n-1行的内容
YY 将当前行的内容复制到缓冲区
nYY 将当前开始的n行内容复制到缓冲区
p 将缓冲区的内容写到光标所在位置02
/str 往右移动到有str的地方
?str 往左移动到有str的地方
n 向相同的方向移动到有str的地方
N 向相反的方向移动到有str的地方
u 取消前一次的误操作
. 再执行一次前面刚完成的某个复杂的命令
ZZ 存盘退出
ZQ 不保存退出
命令行模式下
:n 跳到第n行
:q 退出Vi
:wq 保存退出Vi
:q! 不保存退出Vi
:w 将当前编辑的内容存盘
:w file 将当前编辑的内容写入到file文件中
:n1,n2w file 将从n1开始到n2结束的行写到file文件中
:nw file 将第n行写到file文件中
:1,.w file 从第一行起到光标所在位置的所有内容写入到file文件中
:.,$w file 将从光标当前位置起到文件结尾的所有内容写入到file文件中
:r file 打开另一个文件file
:e file 新建另一个文件file
:f file 将当前文件改名为file文件
:/str/ 从当前光标开始往右移动到有str02的地方
str? 从当前光标开始往左移动到有str02的地方
:/str/w file 将包含有str的行写入到file文件中
:/str1/,/str2/w file 将从str1开始到str2结束的内容写入到file文件中
:s/str1/str2/ 将第一个str1替换为str2
:s/str1/str2/g 将所有的str1替换为str2
:.,$ s/str1/str2/g 将从当前位置到结尾的所有str1替换为str2
:n1,n2 co n3 将从n1行到n2行的内容复制到n3后面
:n1,n2 m n3 将从n1行到n2行的内容移动到n3后面
:d 删除当前行
:nd 删除从当前行开始的n行
:n1,n2 d 删除从n1行开始到n2行结束的所有内容
:.,$ d 删除从当前行开始到结尾的所有内容
:%d 删除文件内的所有内容
:/str1/,/str2/d 删除从str1开始到str2为止的所有内容
:!ls 运行shell命令ls(这里ls可用其他命令替换)
n1,n2 w !Command 将n1到n2行的内容作为Command命令输入。如果不指定n1和n2,则将整个文件的内容作为命令 Command的输入
:r !ls 将命令运行ls的结果写入当前行的位置(这里ls可用其他命令替换)