超经典的AIX系统管理手册之三(vi编辑器的使用)
第三章 vi编辑器
3.1 vi 简介
vi 是 UNIX 世界里使用非常普遍的全屏幕文本编辑器,几乎任何一种UNIX系统都会提供这套软件。AIX当然也支持这种编辑器。熟悉DOS下的文本处理后,用户在开始接触vi时也许会感到它并不好用,然而一旦用户熟悉、掌握了vi ,就会发现它实在是一种功能强大、使用灵活方便的编辑器。
IXDBA.NET技术社区
UNIX
提供一系列的
ex
编辑器,包括
ex
,
edit
和
vi
。相对于全屏幕编辑器,现在可能很难想像如何使用
ex
,
edit
这种行列编辑器。
vi
的原意是“
Visual
”,它是一个立即反应的编辑程式,也就是说可以立刻看到操作结果。
vi
必须控制整个终端屏幕的显示输出,而终端的种类有许多种,特性又不尽相同,所以
vi
有必要知道现在所使用的是哪一种终端。这是通过
TERM
这个环境变量来设定的。
在命令行键入
vi
就可以进入
vi
的编辑环境。
vi
有三种模式:命令模式、文本输入模式以及命令项模式。执行
vi
以后,会先进入命令模式,此时用户可输入各种子命令对行进行编辑,如删除行、拷贝行等。在文本输入模式下,用户可以修改一行的内容并添加新行。在命令模式下键入
i
、
I
、
a
、
A
或
o
等即可进入文本输入模式,键入
ESC
键即可返回命令模式。在命令项模式下,用户可以通过子命令输入更多的参数,如“
/
”子命令要求输入下一个查找项。用户使用
ESC
键返回命令模式。
3.2 vi的进入与离开
vi可以在全屏幕方式下编辑一个或多个文件。如果在执行vi时没有指定文件名,则vi 命令会自动产生一个无名的空文件。如果指定的文件不存在,则vi将按指定的文件名创建一个新的文件。进入 vi 后屏幕左方会出现波浪符号,凡是列首有该符号就代表此列目前是空的。要离开 vi 可以在命令模式下键入 :q , :wq 命令则是存档后再离开(注意冒号)。注意vi并不锁住所编辑的文件,因此多个用户可能同时编辑一个文件,那么最后保存的文件版本将被保留。
以下是vi 命令使用的一些选项及说明:
-c command :在对文件进行编辑前,先执行command命令;
-r filename :恢复文件filename;
-R :以只读方式编辑文件;
-y number :每屏只编辑number 行文本。
3.3 vi 的文本输入模式
使用以下几种命令可以进入文本输入模式(用户在任何时候都可以按ESC键返回命令模式):
新增 (append) :
a :从光标所在位置之后开始输入文本
A :从光标所在行尾开始输入文本
插入 (insert) :
i :从光标所在位置之前开始输入文本
I :从光标所在行的第一个非空白字符前面开始输入文本
开始 (open) :
o :在光标所在行后插入一新行。
O :在光标所在行前插入一新行。
3.4 vi 基本编辑命令
在 vi 里,输入跟编辑是两码事。编辑是在命令模式下操作的,先利用命令移动光标来定位要进行编辑的地方,然后才下命令做编辑。
命令
|
说明
|
备注
|
cc
或
S
|
修改一整行的文本
|
|
C
|
改变一行中光标所在位置之后的部分
|
|
dd
|
删除光标所在的列
|
|
D
|
删除一行中光标所在位置之后的部分
|
|
dw
|
删除光标所在的单词
|
|
J
|
将下一行文本内容合并到本行行尾
|
|
r
|
修改光标所在字符,
r
后接要修正的字符
|
|
R
|
修改本行内容
|
|
s
|
修改光标所在字符
|
|
u
|
恢复上一次所做的修改
|
|
x
|
删除光标所在字符
|
|
X
|
删除光标左侧字符
|
|
~
|
改变光标所在字符的大小写
|
|
.
|
重复上一次的操作
|
|
<<
|
将当前行移到左边
|
|
>>
|
将当前行移到右边
|
|
p
|
将缓冲区的内容拷贝到光标所在行的下一行
|
|
P
|
将缓冲区的内容拷贝到光标所在行的上一行
|
|
“ad
|
将文本删除至缓冲区
a
|
|
“ap
|
粘贴缓冲区
a
中的内容
|
|
yy
或
Y
|
将当前行存入缓冲区
|
|
yw
|
将光标所在的单词存入缓冲区
|
|
0
|
移动到光标所在列的最前面
|
=[Home]
|
$
|
移动到光标所在列的最后面
|
=[End]
|
[CTRL+d]
|
向下半页
|
=[PageDown]
|
[CTRL+f]
|
向下一页
|
|
[CTRL+u]
|
向上半页
|
|
[CTRL+b]
|
向上一页
|
=[PageUp]
|
[CTRL+e]
|
下滚一行
|
|
[CTRL+y]
|
上滚一行
|
|
H
|
移动到屏幕的第一行
|
|
M
|
移动到屏幕的中间
|
|
L
|
移动到屏幕的最后一行
|
|
b
|
移动到上个小字的第一个字母
|