学习vi编辑器 —— vi文本编辑器和简单编辑

2011-05-17 wcdj

 

第一章 vi文本编辑器
第二章 简单编辑

(一) 移动光标
(二) 简单编辑
(三) 插入文本的常用方法
(四) 使用J合并两行
(五) 回顾基本的vi命令

 

学习vi的唯一方法是实践。


 

 

第一章 vi文本编辑器


保存和退出文件
(1) ZZ
退出并保存编辑的命令。首先通过按ESC键确定处于命令模式,然后输入ZZ。
(2) :wq + RETURN
也可以使用ex命令来保存编辑操作。输入 :w 将保存文件但并不退出vi。
如果没有进行任何编辑操作,那么输入 :q 就会退出vi。
输入 :wq 则保存编辑器操作并退出vi。(:wq命令等价于ZZ命令)

不保存编辑而直接退出
(1) :e! + RETURN
如果想放弃本次会话中所做的任何编辑,然后返回到初始文件,则命令 :e! 可以返回到上一次保存的文件版本,因此可以重新对其进行编辑。
(2) :q! + RETURN
如果想放弃编辑并退出vi,那么使用命令 :q! ,该命令可使vi退出正在编辑的文件并返回到UNIX命令提示符下。
注意:
vi通常不允许用户放弃他所做的编辑操作。将感叹号加在 :e 或 :q 命令后面可使vi忽略这个限制,即使已经修改了缓冲区,vi也会执行该操作。

保存文件时所遇到的问题
(1) :w!
输入 :w! file 将覆盖现有的文件;或者输入 :w newfile,将把编辑后的版本保存到新文件中。(等价于 :saveas file命令)
(2) :!rm junkfile
在vi中调用外部命令,又如,:!df ,调用用于检查磁盘剩余空间的df命令。
(3) :sh
创建一个临时的UNIX shell来调用其他的UNIX命令。通过输入 :sh 可以创建shell;输入 CTRL-D 或 exit 将终止shell执行并返回vi编辑环境(在大部分UNIX系统上,使用作业控制shell时,可以通过简单地输入 CTRL-Z 来挂起vi,并返回到UNIX命令提示符下;输入 fg 即可返回到vi)。

 

 

第二章 简单编辑

 

(一) 移动光标
(1) 单一移动
在右手指下的 h 、j 、k 和 l 键可以用来移动光标。
h 左移,一个空格
j 下移,一行
k 上移,一行
l 右移,一个空格

注意 :也可以使用光标箭头键、+ 和 - 来上移和下移,或 RETURN 键和 BACKSPACE 键来移动光标,但它们都不是通用的方法,并且并不是所有的终端都支持箭头键。起初,使用字母键代替箭头键来移动光标可能会比较麻烦,但是进过一段时间的使用之后,你会发现这是vi的一个优点,因为不用让手指离开键盘中心就可以四处移动光标。

(2) 数字参数
可以在移动命令的前面添加数字。例如,命令“4l”将光标向右移动4格,就像键入了4次l一样(llll)。
注意: 复合命令的作用是,对于我们所学的每个命令,可以有更多的选择和更强的功能。

(3) 行内移动
vi有两个实用的行内移动命令:
0    移动到行首
$    移动到行尾

(4) 按文本块移动
我们也可以按单词、句子、段落等等之类的文本块移动光标。
w 命令每次把光标向前移动一个单词,并把符号和标点作为单词处理。
W 命令也可以按单词移动光标,但此时并不把符合和标点作为单词计算。
b 命令可以按单词后移光标,作用与 w 命令相反。
B 命令可以按单词后移光标,作用与 W 命令相反。

(二) 简单编辑
i    插入命令
a    追加命令
c    修改命令
d    删除命令
y    复制命令
p    粘贴命令
先d后p    移动命令   

(1) 插入新文本
i
(2) 追加文本
a
(3) 修改文本
c
cw    到单词的尾部
c2b    后退两个单词
c$    到行尾
c0    到行首

注意: 类似于 i 和 a,c 命令也使你留在插入模式中,直到按下ESC键才会回到命令模式。

[1] 单词
cw
可以理解为“删除标识的单词,并插入新文本直到按下ESC键”。cw 也可以用作于单词的一部分。
[2] 行
cc
cc 是专门用来替换整个当前行的命令。
C
C 用来替换从当前光标位置到行尾的所有字符。(等价于 c$ 命令)
[3] 字符
r 是另一个用来替换文本的命令,r 命令利用一个单个字符替换另一个单个字符。
注意: 在编辑完成后,不必按下ESC键就可以返回命令模式。

(4) 替换文本
s 只替换单个字符。使用前面的计数,则可以替换多个字符。
S 允许改变整行,它将删除整行,而不管光标的位置。前面的计数表示将要替换的行数。
注意: s 和 S 都会使你处于插入模式,当完成新文本的输入时,即可按下ESC键退出插入状态。

R 也是文本替换命令,区别在于它只进入改写模式。你输入的字符将逐个地替换屏幕上的文本,直到输入ESC键为止。最多只能改写一整行;当输入RETURN时,vi就会打开一个新行,并使你处于插入模式。

(5) 大小写转换
~ 改变字母的大小写是一种特殊形式的替换。代字符(~)命令将把小写字母变成大写,或把大写字母变成小写。把光标定位到想改变的字母上,然后输入~,该字母的格式将会转换,并且光标将移动到下一个字符。
注意: 在较老的vi版本中,你不能为~指定它要改变的数字前缀或文本目标,现在的版本允许使用数字前缀。如果想一次改变多行的字母类型,那么你必须通过类似于tr的UNIX命令对文本进行筛选。

(6) 删除文本
d 使用d命令删除文件中的冗余文本。类似于修改命令,删除命令也需要文本目标(将被删除的文本数量)。可以按单词(dw)、按行(dd 和 D)或按其他移动命令进行删除。

[1] 单词
dw
注意: dw 删除了光标定位在其首部的那个单词,要注意单词后面的空格也被删除掉了。dw 也可被用来删除部分单词。
de    它只删除到单词的尾部
dE    区别是,包括标点符号

db    向后删除一个单词
dB    区别是,包括标点符号
d$    删除到一行的尾部
d0    删除到一行的首部

[2] 行
dd
 对光标所在的整行进行删除,它不能删除行的一部分。类似于它的互补命令cc。
xdd 删除x行

D
用来删除从光标位置到行尾的文本(D是d$的缩写)。

[3] 字符
x 用来删除单个字符。只删除光标所在位置的字符。
X 删除光标前一个字符
可以带上数字前缀,将删除该数字所表示的数量的字符。例如,5x 将删除光标右边的5个字符。

删除操作中遇到的问题
u 取消上次命令操作
U 将该改行恢复到其原来的状态,即对改行进行任何改变之前的状态。

(7) 移动文本
在vi中,可以通过删除文本然后再把所删除的文本粘贴到文件中的其他位置来移动该文本。如同“剪切和粘贴”那样。每次删除一个文本块,删除的部分都将暂时保存在一个专用缓冲区中。
p(小写)粘贴命令把位于缓冲区中的文本粘贴到光标位置的后面。
P(大写)区别是粘贴到光标的前面。
如果删除了一行或多行,那么p(小写)将把已删除的文本粘贴到光标下面的新行中。如果删除的内容不到一整行,那么p(小写)将把已删除的文本粘贴到当前行中的光标的后面。
注意:
一旦删除了文本,则必须在下一个修改命令或删除命令之前恢复它。如果进行的其他编辑影响了缓冲区,那么所删除的文本就会丢失。只要没有进行新的编辑,就可以反复执行粘贴操作。还有一种解决方法是,把删除的文本保存到命名缓冲区中,以便在以后可以重复恢复它。

调换两个字母的顺序
xp 删除字符后把它粘贴到光标的后面,来调换两个字母的顺序。

(8) 复制文本
y
复制命令把选中的文本复制到一个专用缓冲区中,文本将保存在那里直到出现另一个复制操作(或删除操作)。
与修改和删除命令一样,复制命令也可以与任何移动命令结合在一起使用(yw、y$、4yy)。
yy
类似于dd和cc,快捷操作yy也作用于一整行。
Y
注意: 快捷操作Y并不像D和C那样使用,Y复制整行而不是复制从当前光标位置到行尾的部分。(等价于yy)

注意: 复制操作与删除操作使用同一个缓冲区,每个新的删除操作或复制操作将取代复制缓冲区中先前的内容。

(9) 重复或撤销最后的命令
在给出下一个命令之前,你所执行的每个编辑命令都将存储在一个临时缓冲区中。例如,如果在文件中的某个单词后插入the,那么用来插入文本的命令以及所输入的文本都将会暂时保存起来。
.(句点)
任何时候需要重复同样的编辑命令,都可以通过使用重复命令:句点(.)来节省操作时间。把光标定位到想要重复编辑命令的位置,然后输入句点。

u
如果进行了错误操作,只要按下u键就可以撤销上次操作。光标也不需要位于上次操作进行时所在的行。
U
区别是,撤销对单行进行的所有编辑。前提是,光标要保持在改行上,一旦把光标移到了其他行,就不能使用U命令了。


(三) 插入文本的常用方法
i 是在光标前面插入文本,a 是在光标后面插入文本。这里还有一些在相对于光标不同位置的地方插入文本的其他命令:
A    在当前行的尾部添加文本(等价于 $a)
I    在行首插入文本(等价与 0i)
o    在光标所在行的下面新建一行,等待输入文本
O    在光标所在行的上面新建一行,等待输入文本
s    使用输入的文本替换光标所在位置的字符(最好用途,是把一个字符改为多个字符)
S    使用输入的文本替换当前行(等价于 cc)
R    使用新字符覆盖现有字符(区别:r    只替换光标所指的一个字符)
所有这些命令都会使vi处于插入模式,在插入文本后,记得按下ESC键返回命令模式。

插入命令的数字参数
除 o 和 O 以外,上面的插入命令(加上 i 和 a)都可以带有数字前缀。通过数字前缀,可以使用 i、I、a 和 A 命令插入一排星号或替换字符。
例如,输入 10i* + ESC 可以插入10个星号。(注意:最后必须按 ESC才可以生效)


(四) 使用J合并两行
有时在编辑文件时,想合并一系列很难浏览的短行。当要把两行合并为一行时,可以将光标定位在第一行上,然后按下J键来合并这两行。
使用带数字参数的 J 能合并该数量的连续行。例如,可以使用 3J 命令来合并3行。


(五) 回顾基本的vi命令
 

编辑命令

文本目标

修改

删除

复制

1 个单词

cw

dw

yw

2 个单词,不计标点

2cw c2w

2dw d2w

2yw y2w

向后 3 个单词

3cb c3b

3db d3b

3yb y3b

1

cc

dd

yy Y

到行尾

c$

d$ D

y$

到行首

c0

d0

y0

单个字符

r

x X

yl yh

5 个字符

5s

5x

5yl

 

移动

四个箭头(左下上右)

h j k l

到下一行的首字符

+

到上一行的首字符

-

到单词的尾部

e E

按单词前移

w W

按单词后移

b B

到行尾

$

到行首

0

 

其他操作

从缓冲区输出文本

p P

启动 vi ,如果指定了文件,就打开该文件

vi file

保存编辑、退出文件

ZZ

不保存编辑、退出文件

:q!

 

文本创建和操作命令

在当前位置插入文本

i

在行首插入文本

I

在当前位置追加文本

a

在行尾追加文本

A

在光标所在行的下面新建一行,等待输入新文本

o

在光标所在行的上面新建一行,等待输入新文本

O

删除行并替换文本

S

使用输入的文本替换光标所在位置的字符

s

使用新文本覆盖现有文本

R

合并当前行和下一行

J (注意大写)

转换大小写

~

重复上次操作

.

取消上次修改

u

恢复行到初始状态

U



虽然只使用这些表所列出的命令就可以运用vi,但是为了掌握vi的真正功能(和提高自己的工作效率),将需要更多的工具。
在后续总结这些工具的用法。

参考 :学习vi编辑器(第六版)

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值