vi编辑器,通常称之为vi,是一种广泛存在于各种UNIX和Linux系统中的文本编辑程序。它的功能十分强大,但是命令繁多,不容易掌握,它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。vi不是基于窗口的,所以,这个多用途编辑程序可以用于在任何类型的终端上编辑各式各样的文件。
为什么学习vi编辑器?
就使用的方便性而言,有比vi更好的编辑器,还有图形化的编辑器,为什么还要用vi?
- 历史久远,功能强大,在有些情况下系统中能够找到的编辑器只有vi;
- 用户一旦熟悉后,使用非常方便;系统管理员使用正则表达式可以极大地提高工作效率,而学习vi也是掌握正则表达式的有效途径。
由于vi的版本不同,其命令格式、功能和用法会有一些差别。Shell中执行vi命令,RedHat系统实际上是执行vim,它是传统vi的增强版本
1 VI的三种工作模式
命令模式(command mode)—执行命令
启动VI默认进入命令模式。此时界面不能编辑,只能接受命令(键入的命令看不到)
输入模式(Insert mode)—输入文本
命令模式下用i(sert)
,a(ppend)
,o
,s
等均可进入该模式。按esc
返回命令模式。
此模式下左下角有– INSERT – 标志,如图所示。
末行模式(last line mode)—执行待定命令
实际上也是命令模式的一种,在命令模式下输入冒号:
进入一个命令行,可显示地输入命令(所以也有些书认为是两种工作模式)。
三种模式可自由切换,一般切换命令就是操作的英文单词的首字母。
2 Vi的启动
启动命令:打开2.cpp文件。
vi 2.cpp
vim 2.cpp
- 如果文件存在,则vi显示文件内容并等待用户的命令。
- 如果指定的文件不存在,则vi将告知用户这是未命名的文件,并进入一个空白的界面。
如果没有语法高亮,如图左,有可能是vi编辑器版本低,可以下载vi增强版解决问题,也可能是没设置好。
以CentOS为例:yum -y install vim
启动vi时都是默认处于命令模式。用户必须使用命令(如i
)切换到文本输入模式才能进行输入编辑,或者可执行删除、复制等编辑命令。
3 Vi的退出
退出vi前,先按ESC
键,以确保当前vi的状态为命令模式,然后再键入:
(冒号),输入下列命令,退出vi。
处于命令模式,先输入冒号
:q
(quit)文件未修改,退出。
:q!
(quit)文件有修改,但不想保存,强制退出。
:w
(write)保存文件的修改,但不退出。
:wq
(write and quit)保存并退出
:wq!
(write and quit)对于只读文件,强制保存并退出。
处于命令模式,不用输入冒号
ZZ
大写ZZ,保存修改并退出。
ZQ
大写ZQ,不保存退出。
4 怎么编辑
光标移动
按ESC
键,以确保当前vi的状态为命令模式。
h
:向左移动一个字符
l
:向右移动一个字符
j
:向下移动一行
k
:向上移动一行
nG
:移动到第n行首,n为数字,命令模式下输入set nu(mber)
可设置vi显示行号,set nonu(mber)
不显示行号。
输入内容
必须从命令模式转入插入模式才能进行输入编辑,命令有:
新增 (append)
a
:从光标所在位置后面开始新增
A
:从光标所在行最后面的地方开始新增
插入 (insert)
i
:从光标所在位置前面开始插入
I
:从光标所在行的第一个非空白字元前面开始插入
开始 (open)
o
:在光标所在行下新增一列并进入输入模式。
O
:在光标所在行上方新增一列并进入输入模式。
删除内容
按ESC
键,以确保当前vi的状态为命令模式。
x
: 删除光标所在字符
dw
:删除一个单词
dd
:删除光标所在的行
s
:删除光标所在字节,并进入输入模式
撤消更改
按ESC
键,以确保当前vi的状态为命令模式。
u
:撤销修改,恢复刚才被修改的文本
U
:撤销修改,恢复光标所在行的所有修改
:q
(quit)文件修改不保存,退出。
复制内容
复制命令:y
yy
: 复制整行
yw
:复制光标所在的单词
nyw
:复制包括光标所在的n个单词
nyy
:复制包括当前行在内的n行
粘贴内容
p
,P
粘贴复制的内容
学习完这些基本能使用vi编辑文本了,更高级的玩法看后面vi编辑器进阶教程。