知识点补充:
1 linux三种模式
1.命令行模式(默认/command mode)
该模式是进入 vi 编辑器后的默认模式。任何时候,不管用户处于何种模式,按下Esc键即可进入命令模式。
在命令模式下,用户可以输入 vi 命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释。若输入的字符是合法的 vi 命令,则 vi 在接受用户命令之后完成相应的动作。
但需注意的是,所输入的命令并不回显在屏幕上。若输入的字符不是 vi 的合法命令,vi 会响铃报警。
2.文本输入模式(编辑模式/Insert mode)
在命令模式下输入插入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。
在该模式下,用户输入的任何字符都被 vi 当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按下Esc键即可。
3.末行模式(底行模式/last line mode)
末行模式也称 ex 转义模式。
在命令模式下,用户按:键即可进入末行模式下,此时 vi 会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个:作为末行模式的说明符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。
末行命令执行完后,vi 自动回到命令模式。
vi 工作模式之间的切换
如果要从命令模式转换到编辑模式,可以输入命令a或者i。
如果需要从文本模式返回,则按下Esc键即可。
在命令模式下输入:即可切换到末行模式,然后输入命令。
vi 编辑器的 3 种模式的转换如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/3cd86c40333b3e3fa241cb4aa025cab4.png)
2 vi常用命令汇总
2.1 文件操作
![](https://i-blog.csdnimg.cn/blog_migrate/421619ce9b2f5ac43581090626871719.png)
2.2 进入编辑操作
![](https://i-blog.csdnimg.cn/blog_migrate/dfacf6e71789bab38bc86c9a452b7198.png)
2.3 光标移动
![](https://i-blog.csdnimg.cn/blog_migrate/32cddf878136424d5cba3b7056a33031.png)
2.4 文本赋值、粘贴、剪切
![](https://i-blog.csdnimg.cn/blog_migrate/85bb0551bf0f029b724a3a7a4ac13442.png)
2.5 查找及替换命令
![](https://i-blog.csdnimg.cn/blog_migrate/7305ff2912ccf0d3228ae3bddd7d0750.png)
1、vim操作:
(1) 应用vi命令在/tmp文件夹下创建文件,文件名newfile。在newfile首行输入日期时间
[root@longbo test]# vi /tmp/newfile
[root@longbo test]# date > /tmp/newfile
(2) 将/boot/grub2/grub.cfg文档的内容读入到newfile文档中(在日期的下一行即第2行)
[root@longbo test]# vi /tmp/newfile
:r /boot/grub2/grub.cfg
(3) 查找文档中包含#号字符的行,将整行删除
[root@longbo test]# vi /tmp/newfile
:g/#/d
![](https://i-blog.csdnimg.cn/blog_migrate/005cdaf16733fb87308211788225b464.png)
![](https://i-blog.csdnimg.cn/blog_migrate/13d6af2552b0e59f68b7162470dc919d.png)
(4) 开启VI的行号提示功能
[root@longbo test]# vi /tmp/newfile
:set nu
文件查看:查看newfile文件的第6行
![](https://i-blog.csdnimg.cn/blog_migrate/73dd61488b245e4d93fe1bf5e9c123a1.png)
查找文件 /usr/share/xml/xml.xsd 中包含字符串 re 的所有行。将所有这些行的副本按原始顺序放在文件/root/files 中
[root@longbo test]# touch /usr/share/xml/xml.xsd
[root@longbo test]# touch /root/files
[root@longbo test]# grep re /usr/share/xml/xml.xsd | > /root/files