昨天有人提出此类问题,我特地加以编辑一下,请大家共享,可能写的不好!
大家在vi编辑中,常常遇到想把文件A里面的一行或多行,复制到B文件里面去
(可能很多人不知道怎么办),该怎么做了?
下面是几中方法:
1.如果你有多台机器,而且是联网的,你可以.netterm虚拟终端,telnet登陆主机对A文件进行修改、复制,然后打开B文件粘贴过去!
2.如果是单机,当然要用unix自带的编辑功能呢
先简单介绍一些vi编辑里的命令:
(A).yw 将当前字存入无名缓冲区,前面可加"x,表示存入名字为x的有名
缓冲区(x为a-z),也可加数字表示存入的字数,以后可用P或p命
令取出
yy 将当前行存入无名缓冲区,用法参看yw
(B).命令如下:a-Z 是缓冲区,也可移出数字1-9指定的删除缓冲区
利用命名缓冲区可很好地保存若干文本段,便于以后存取、移动或者重排。这些缓冲区用a到z字母命名!为了访问这些缓冲区中的一个,要使用双引号
例如:要把一行插入a缓冲区,可键入:
"ayy
为了把这个文本放回该文件中,键入"ap
(c).m做标志命令:
m 字母 用字母标记当前行,以后可用 '字母使光标移动到当前行,
(参看'命令)
列子:1。将a文件中的4行到b文件中
命令如下:"ay4+
:ex b (转到b文件中)
然后"ap
2. 将a中多行复制到b文件中
先在开始处做标志mk
然后在末尾用"ay'k (光标自动回到开始处,此时已经把你的内容放到缓冲区了)
其中a表示缓冲区a
然后用ex转义到你的文件B中,然后用"ap命令粘贴就行
3。如果你文件中有多次要复制粘贴的话,看下面:
a表示缓冲区a ,你还继续可以使用缓冲b吗
缓冲区有a-z和1-9这么多
缓冲区就好象windows下的煎切版一样,它有好多个,你可以把你想要的复制进去,然后粘贴,只不过你用"ay时候多换a就是了,如你要复制462行用"ay ,复制536行用"by
我编写的不好,恳请斑竹帮我修改和补充,谢谢!
【发表回复】【查看CU论坛原帖】【添加到收藏夹】【关闭】
sdccf 回复于:2004-01-14 11:40:03 |
好帖子,加精! |
sfpeng 回复于:2004-01-14 12:04:39 |
平时经常用到其中的一些操作,但一直没有深入研究,这么全面的介绍真的不错,UP! |
unixgaoshou 回复于:2004-01-14 13:47:35 |
多谢楼主! |
simonzhan 回复于:2004-01-14 13:52:38 |
rt |
sysgxb 回复于:2004-01-14 13:57:00 |
我试试,看看怎么样 |
saintdragon 回复于:2004-01-14 14:05:19 |
此外,可以用r命令将另一个文件中的所有内容读取到文件的光标定位处! |
jxp2002 回复于:2004-01-14 14:12:00 |
[quote:da2d0d816a="saintdragon"]此外,可以用r命令将另一个文件中的所有内容读取到文件的光标定位处![/quote:da2d0d816a]
请saintdragon"把功能把此功能,r命令写全,多谢谢! |
cuit 回复于:2004-01-14 14:31:22 |
我一般不记那么复杂的命令,
如果要复制A文件的N行,我一般把光标移到开始处用: :.,+n w!/tmp/x1 然后在B文件中光标移到我要复制的位置: :r /tmp/x1 |
jxp2002 回复于:2004-01-14 15:05:42 |
如果有很多行的话,数来数去的真的很烦人的,我也希望找一个更简单的地方 |
meteor06 回复于:2004-01-14 15:20:04 |
[quote:52a15812e3="jxp2002"]如果有很多行的话,数来数去的真的很烦人的,我也希望找一个更简单的地方[/quote:52a15812e3]
set number 加上行号 |
cutegirl 回复于:2004-01-14 15:24:40 |
set nonu 隐藏行号 |
cuit 回复于:2004-01-14 16:04:32 |
[quote:f46f9a8a24="jxp2002"]如果有很多行的话,数来数去的真的很烦人的,我也希望找一个更简单的地方[/quote:f46f9a8a24]
:lol: 又不是数钱,数那么准确干嘛? 大概翻几屏然后行数=n*23,然后到要复制的尾部后, :-n,. w! /tmp/x1 或者在开始处:^G一下,看一下起始行数。 然后光标移到尾部, : ???,. w! /tmp/x1 象楼上说的也蛮好, :n1,n2 w! /tmp/x1 |
sdccf 回复于:2004-01-14 16:10:34 |
[quote:1e9c36af8a="jxp2002"]
请saintdragon"把功能把此功能,r命令写全,多谢谢![/quote:1e9c36af8a] :r file即可。 |
hseng 回复于:2004-01-14 17:25:43 |
正需要!!!来的正是时候!!!
试了一下这样也行 "a5yy (file1 5 lines into a) :e file2 (open file2 edit) "ap (copy ) rew (return to file1 ) (怎样又回到file2 ???) |
hseng 回复于:2004-01-14 17:55:26 |
不同屏的好象没有什么方法是吧? |
海德 回复于:2004-01-14 19:33:50 |
:P |
htldm 回复于:2004-01-14 20:22:49 |
真正的精华文章 |
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/