1.历史:
最早的编辑器ed,sed(流编辑器),后来产生vi再产生vim(vi improved).vi(vim)是linux下可视化交互编辑器。
2.vi有三种模式:
命令模式 insert模式 命令行模式
一进入vi后是命令模式,按任何字母都是输入命令。按"i I a A o O s S"任一个字母可进入insert模式,回到命令模式按ESC。命令模式进入命令行模式按:,回到命令模式按ESC。
i (常用)在当前位置进入insert模式I 在当前行头部进入insert模式
a (常用)在当前位置下一个字符进入insert模式
A 在当前行末尾进入insert模式
o (常用)在当前位置之下新开一行进入insert模式
O (常用)在当前位置之上新开一行进入insert模式
3.命令模式:
0 到当前行的行首$ 到当前行末尾
G 到文件最后一行行首
[] 一个段落一个段落的跳
6G 到第6行行首
Ctrl+G 显示文件多少行,你现在在什么位置
dd 删除(剪切)一行
3dd 删除(剪切)3行
dw 删除(剪切)一个单词
5dw 删除(剪切)5个单词
x 删除1个字符
3x 删除3个字符
注:linux里面没有剪切命令,删除剪切共用.
yy 复制一行
3yy 复制3行
p 粘贴
”a5yy 复制5行到剪贴板a
"ap 将剪贴板a的内容粘贴出来
r 替换一个字符
R 一直替换,直到按ESC结束
u undo撤销命令操作
CTRL+r redo重做命令操作
/str 查找字符串str
?str 同上,查找字符串str
n next,下一个
4.命令行模式
:wq 写入并退出:q 退出
:q! 强制退出不保存
:w! 强制写入文件(场景:a账号想改b账号的所属文件,可以试试看)
:e! 将当前更改的文件恢复到最初状态
:set nu 显示行号
:set nonu 取消显示行号
:20 到第20行
:w 目录/文件名 另存为目录/文件名 例子 :w b.txt
:w >> 目录/文件名 当前文件内容追加到目录/文件名
:r 目录/文件名 在当前位置读入目录/文件名的内容进来 例子 :r /etc/group
:r !命令 在当前位置读入命令的结果 例子 :r !ls
:1,$s/aaa/bbb/g 第一行到最后一行($)替换(s)aaa字符串为bbb字符串,不询问是否替换(g)
:1,5s/aaa/bbb/c 询问替换吗,交互方式替换字符串
:!命令 运行命令然后返回
:so文件 读取文件,再执行文件里面的命令