目录:
- Vim编译器模式介绍
- Vim编译器模式间切换
- Vim编译器的常规操作
- 模式中基本操作
- Vim知识补充
- vi练习
1、文本编译器的概述:
文本编译器的作用:
- 创建或修改文本文件
- 维护Linux系统中的各种配置文件
Linux中最常用的文本编译器:
- vi:类Unix系统中默认的文本编译器
- Vim:vi编译器的增强版本,习惯上也称为vi。
Vim常用工作模式:
命令模式、输入模式、末行模式、可视模式、替换模式
命令模式:这是Vim启动后的默认模式
-
光标移动、字符串查找以及删除、复制、粘贴文件内容等相关操作
插入模式: -
用来输入文本
-
进入Vim编译器后,按a或者i等就可进入插入模式
可视模式: -
主要用来选择复制区块文本
-
在命令模式下,使用v或者V键就可以进入可视模式
末行模式: -
主要用来设置vi编辑环境、保存文件、退出编辑器,以及对文件内容进行查找、替换等操作
-
在命令模式下,输入:号之后就进入了末行模式
替换模式: -
一种特殊的输入模式
-
每个输入的字符都会覆盖文本中已经存在的字符
-
在命令模式下,按”R”就可以进入替换模式
2、切换工作模式
3、常规操作
1、从命令模式进入插入模式
2、退出Vim编译器的方法
4、模式中基本操作
1、命令模式中的基本操作
- 1、光标移动
- 2、删除、复制、粘贴
- 3、文件内容查找
- 4、撤销编辑
- 5、重复操作
按.键
2、末行模式中基本操作
- 1、文件内容替换
- 2、打开新文件或读入其他文件内容
- 3、撤销和另存为
- 4、多文件操作
格式:vi 文件1 文件2 文件3
补充(重要):
Vim -o 文件1 文件2 上下打开两个文件
Vim -O 文件1 文件2 左右打开两个文件
文件之间的光标跳转,使用ctrl+w组合键 - 5、行号显示
3、可视模式中基本操作 - 可视模式中的复制、删除等
5、Vim知识补充
-
vim -p 以标签页形式打开多个文件
:tabnew 增加一个标签
:tabc 关闭当前的tab
:tabo 关闭所有其他的tab
:tabs 查看所有打开的tab
:tabp 或gT 前一个
:tabn 或gt 后一个 -
多行缩进----------V 行可视模式
(先按大写V,然后选择需要缩进的行,最后按>)
选中多行
向右缩进>
向左缩进< -
在VIM界面,执行shell命令:
进行末行模式,!命令
6、vi练习
- 编辑文本文件/home/text/file1,分4行输入bbb bbb bbb、 ddd ddd ddd、aaa aaa aaa、ccc ccc ccc。保存不要退出;
- 在末行模式下打开一个新文件/text/file2;
- 在file2中输入内容为eee eee
eee在这一行内容之后,将file1的内容读入到file2中,接着在命令模式下按照abcde的显示顺序调整每行的位置,最后保存退出; - 同时编辑file1和file2,接着从file1切换到file2,然后再快速切换回来,接着将file2的内容读到file1内容的末尾,显示文件file1内容的行号,复制3到6行到file1内容的末尾;
- 利用替换命令将全文的每行第一个ccc都替换为333;
- 将全文中所有aaa都替换为111,撤销行号,最后不保存退出;
[root@rhel1 ~]# vi /home/text/file1
bbb bbb bbb
ddd ddd ddd
aaa aaa aaa
ccc ccc ccc
~
~
-- INSERT --
[root@rhel1 ~]# vi /home/text/file1
bbb bbb bbb
ddd ddd ddd
aaa aaa aaa
ccc ccc ccc
~
~
:e /text/file2
[root@rhel1 ~]# vi /home/text/file1
~
~
"/text/file2" [New File]
[root@rhel1 ~]# vi /home/text/file1
eee eee eee
~
~
:r /home/text/file1
[root@rhel1 ~]# vi /home/text/file1
eee eee eee
bbb bbb bbb
ddd ddd ddd
aaa aaa aaa
ccc ccc ccc
~
~
"/home/text/file1" 4L, 49C
[root@rhel1 ~]# vi /home/text/file1
# 在命令模式下使用复制、粘贴、删除等操作
aaa aaa aaa
bbb bbb bbb
ccc ccc ccc
ddd ddd ddd
eee eee eee
~
~
:wq
[root@rhel1 ~]# vim /home/text/file1 /text/file2
2 files to edit
bbb bbb bbb
ddd ddd ddd
aaa aaa aaa
ccc ccc ccc
~
~
"/home/text/file1" 4L, 49C
[root@rhel1 ~]# vim /home/text/file1 /text/file2
2 files to edit
bbb bbb bbb
ddd ddd ddd
aaa aaa aaa
ccc ccc ccc
~
:n
[root@rhel1 ~]# vim /home/text/file1 /text/file2
2 files to edit
aaa aaa aaa
bbb bbb bbb
ccc ccc ccc
ddd ddd ddd
eee eee eee
~
"/text/file2" 6L, 62C
[root@rhel1 ~]# vim /home/text/file1 /text/file2
2 files to edit
aaa aaa aaa
bbb bbb bbb
ccc ccc ccc
ddd ddd ddd
eee eee eee
~
:N
[root@rhel1 ~]# vim /home/text/file1 /text/file2
2 files to edit
bbb bbb bbb
ddd ddd ddd
aaa aaa aaa
ccc ccc ccc
~
"/home/text/file1" 4L, 49C
[root@rhel1 ~]# vim /home/text/file1 /text/file2
2 files to edit
bbb bbb bbb
ddd ddd ddd
aaa aaa aaa
ccc ccc ccc
~
:r /text/file2
[root@rhel1 ~]# vim /home/text/file1 /text/file2
2 files to edit
bbb bbb bbb
ddd ddd ddd
aaa aaa aaa
ccc ccc ccc
aaa aaa aaa
bbb bbb bbb
ccc ccc ccc
ddd ddd ddd
eee eee eee
~
"/text/file2" 6L, 62C
[root@rhel1 ~]# vim /home/text/file1 /text/file2
2 files to edit
1 bbb bbb bbb
2 ddd ddd ddd
3 aaa aaa aaa
4 ccc ccc ccc
5 aaa aaa aaa
6 bbb bbb bbb
7 ccc ccc ccc
8 ddd ddd ddd
9 eee eee eee
~
:set nu
复制3到6行到file1内容的末尾(在命令模式下,3G跳到第3行,再4yy从当前行复制4行,G跳到尾部,再p复制。)
[root@rhel1 ~]# vim /home/text/file1 /text/file2
2 files to edit
1 bbb bbb bbb
2 ddd ddd ddd
3 aaa aaa aaa
4 ccc ccc ccc
5 aaa aaa aaa
6 bbb bbb bbb
7 ccc ccc ccc
8 ddd ddd ddd
9 eee eee eee
10 aaa aaa aaa
11 ccc ccc ccc
12 aaa aaa aaa
13 bbb bbb bbb
~
4 more lines
[root@rhel1 ~]# vim /home/text/file1 /text/file2
2 files to edit
1 bbb bbb bbb
2 ddd ddd ddd
3 aaa aaa aaa
4 ccc ccc ccc
5 aaa aaa aaa
6 bbb bbb bbb
7 ccc ccc ccc
8 ddd ddd ddd
9 eee eee eee
10 aaa aaa aaa
11 ccc ccc ccc
12 aaa aaa aaa
13 bbb bbb bbb
~
:1,13 s/ccc/333
[root@rhel1 ~]# vim /home/text/file1 /text/file2
2 files to edit
1 bbb bbb bbb
2 ddd ddd ddd
3 aaa aaa aaa
4 ccc ccc ccc
5 aaa aaa aaa
6 bbb bbb bbb
7 ccc ccc ccc
8 ddd ddd ddd
9 eee eee eee
10 aaa aaa aaa
11 ccc ccc ccc
12 aaa aaa aaa
13 bbb bbb bbb
~
:1,13 s/aaa/111/g