http://91mail.51.net提供??需要完整的pdf文档请到http://91mail.51.net下载
一、UNIX系统编辑器的概述
* ed :UNIX系统中原始的行编辑器。
* ex :行编辑器,是 ed 编辑器的扩充。
* vi :全屏幕编辑器,为UNIX系统的主
要编辑器,它也是 ed 的超集。
* emacs:全屏幕编辑器,不是UNIX系统
版本4的组成部分,是独立的编
辑程序。
3.1、 vi的启动与退出
1、vi 的启动
输入vi命令后,便进入全屏幕编辑环境,此时
的状态为命令方式。
① vi 光标定在该缓冲区第一行第一列位置
② vi example 光标定在缓冲区第一行第一列位置
③ vi + example 光标定在文件最后一行第一列位置
④ vi +N example 光标定位在文件第N行第一列的
位置(N:为数字)
⑤ vi +/string example 光标定位在文件中
第一次出现字符串string的行首位置
1.1 vi 的应用方式
* vi的名字取自于visual。
* 有两种操作方式:命令方式、插入方式和ex转义方式
* 命令方式下输入的大、小写是敏感的。
二、 vi的启动与退出 (续)
2、vi 的退出
建议 首先键入“ESC”键,以确保当前vi的
状态为命令方式,输入下列命令,退出vi。
① :w 将编辑缓冲区的内容写入文件
:q 退出vi
② :wq 将上面两步操作可以合成一步来完成。
③ :x 功能同上。
④ :q 退出vi,此时的正文没有被更改过。
⑤ :q! 强行退出vi,使更新内容不写回文件。
三、光标在窗口中移动
注释
字 : 是由空格或标点符号分开的字母序列。
句子 :是以句号(.)、问号(?)或感叹号
(!)结束的字符序列,句子之间由两个
空格或一个回车分开。
段落 :一个段落前后各有一个或多个空白行。
三、光标在窗口中移动(续)
1、 字符及行间移动
命 令 结果
—————————— ——————————
↑ 或 k 向上移一行
↓ 或 j 向下移一行
← 或 h 或 退格键 左移一个字符
→ 或 l 或 空格 右移一个字符
o 移到当前行的开始
$ 移到当前行的结尾
+ 或 回车符 移到下一行的开始
- 移到上一行的开始
三、光标在窗口中移动 (续)
2、 其它单位的移动
命 令 结果
——————— —---------—————————
w 移到下一个字或标点符号
W 移到下一个字
e 移到这个字或标点符号的结束
E 移到字的下一结尾
b 回到字或标点符号的开始
B 移回到字的开始
) 移到下一个句子的开始
( 移到这个句子的开始
} 移到下一段落的开始
{ 移到这一段落的上一开始
四、在缓冲区中移动窗口
命令 结果
——-——— --—------—————————
CTRL-F 向前(上)移动一满屏幕
CTRL-D 向前(上)移动半屏幕
CTRL-B 向后(下)移动一满屏幕
CTRL-U 向后(下)移动半屏幕
H 光标移动到屏幕顶部
M 光标移动到屏幕中间
L 光标移动到屏幕底部
注意 可在这些命令前加入数字n作为前缀,使相应命
令执行n次。但nG使光标定位在第n行。
五、光标在正文中的移动
命令 结果
——-——— --—------—————————
G 光标移动到文件的尾部
nG 光标移动到文件的第n行
: 0 光标移动到文件的第1行
: 1 光标移动到文件的第1行
: n 光标移动到文件的第n行
: $ 光标移动到文件的尾部
/string 光标向前移动到string首
?string 光标向后移动到string首
六、增加正本
命令 结果
——-——— ----------—------—————————
a 将输入文本插入在光标之后
A 将输入文本插入在当前行的行尾
i 将输入文本插入在光标之前
I 将输入文本插入在当前行的开始
o 将在当前行的下一行处打开一新行
O 将在当前行的上一行处打开一新行
注意 ESC:使编辑状态从输入方式切换到命令方式
七、修改正本
命令 结果
——-— ---------------------—------—————————
r 替换当前字符,不需按ESC。
R 从当前字符开始进行替换,至ESC键为止。
nC 对从当前字符开始的n行字符进行替换,
直至键入ESC键为止。
nc$ 同 nC。
ncw 对当前字符开始的n个字进行替换操作,
直至键入ESC键为止。
注意 n 为数字,为 1 时可省略。
七、修改正本 (续)
命令 结果
——-— ------------------—------—————————
ncc 对从当前字符开始的n行字符进行替换,
直至键入ESC键为止。
ns 替换从当前字符开始的n个字符,直至键入
ESC键为止。
nS 对从当前行开始的n行字符,进行替换,
直至键入ESC键为止。
J 将当前行和下一行连接起来。
注意 n 为数字,为 1 时可省略。
八、删除正本
1. x 与 X 命令的使用
命令 结果
——-— --------------—------—————————
x 删除当前字符。
nx 删除从当前字符开始的n个字符。
X 删除当前字符的前一个字符。
nX 删除当前字符的前n个字符。
注意 n 为数字,为 1 时可省略。
八、删除正本 (续)
2. d与D命令的使用
用来将指定范围内文本删除,并存入缓冲区。
命令 结果
——-— --------------—------—————————
ndw 删除以当前字开始的n个字。
nd$ 删除以当前字符开始的n行字符。
ndd 删除从当前行开始的n行。
D 与d$同义。
d) 删除到下一句的开始。
d} 删除到下一段的开始。
d 回车 删除两行。
九、移动与复制正本
1. m命令的使用
将指定范围的文本移动到指定位置。格式如下:
<起始行号>,<结束行号> m <目标行号>
例:: 3 , 14 m 56
: 7 , 52 m 0
2. t命令的使用
将指定范围的文本复制到指定位置。格式如下:
<起始行号>,<结束行号> t <目标行号>
例: 1 , 14 t 60
7 , 52 t $
九、移动与复制正本 (续)
3. y与Y命令的使用
将指定范围的文本复制到缓冲区,但不删除其内容。
命令 结果
——-— --------------—------—————————
nyw 复制从当前字符开始的n个字;
ny$ 复制从当前字符开始的n行字符;
Y 与y$同义;
y) 复制到下一句的开始;
y} 复制到下一段的开始;
nyy 复制从当前行开始的n行;
y 回车 复制两行;
十、重复和取消操作
命令 结果
——-— ----------------------—------—————————
. 重复上一次所执行的命令。
u 取消最后一次所做的修改或删除。
U 取消此次到当前行来做的所有修改。
p 恢复当前缓冲区中内容。如缓冲区中内容是整
行信息,则放到当前行下面的一个新行;否则 将缓冲区的内容放到光标位置右边。
P 同p操作。恢复整行信息时,放到当前行上面的
一个新行;否则,放到光标位置左边。
:e! 重新编辑。废弃对这次文件所做的全部修改,
重新从盘中读入该文件,并开始编辑。
十一、检索和替换
命令 结果
——-— ----------------------—------—————————
/string 从当前位置向后检索字符串string,并将光标
定位在该串起始位置(向后循环检 索 )。
?string 从当前位置向前检索字符串string,并将光标
定位在该串起始位置( 向前循环检索)。
// 重复上一条检索命令,但方向是向后检索。
?? 重复上一条检索命令,但方向是向前检索。
n 重复上一条检索命令,而不管其检索方向。
(即检索方向不变)。
N 重复上一条检索命令, 但检索方向改向。
:g/string 检索字符串string,光标定位在第一次检索到 的string所在行的行首。
十一、检索和替换 (续)
1. 字符串替换命令格式1 :[addr]s/s1/s2/ [option]
[addr] 表示检索范围,省略时表示当前行。
如: “1,20” :表示从第1行到20行;
“%” :表示整个文件,同“1,$”;
“. ,$” :从当前行到文件尾;
s 为替换命令;s1 要被替换的串;s2 为替换的串;
option : ? g 表示全局替换; ‚ c 进行确认 ;
? p 替代结果逐行显示(Ctrl + L恢复屏幕);
„ 省略时仅对每行第一个匹配串进行替换;
2. 字符串替换命令格式2 :g/s1/s//s2/ [option]
十二、其他命令
命令 结果
------—--—-— --------------—------————————
:set number 显示行号。
:set nonumber 不显示行号。
:set all 显示vi各选项的设置情况。
:f 显示当前文件及工作缓冲区状况。
:r filename 将名为filename的文件内容插入到
缓冲区当前行的下面。
:r ! cmd 执行命令cmd,并将结果插入到缓冲
区当前行的下面。