vim中文本块拷贝黏贴(很好很强大...)

上一篇 / 下一篇  2010-04-26 16:19:24

请教:vi中的文本块拷贝和粘贴(附原创正解……^O^……)转自:http://bbs.chinaunix.net/archiver/?tid-448310.html

如何用vi灵活地对文本块进行操作?(原创)

// 版权所有,欢迎引用,但请标明出处和作者……^O^……

一、预备知识:
y  复制(yank)
d  删除(delete)
p  粘贴(put,小写表示在当前位置之后粘贴,大写表示在当前位置之前粘贴)
c  修改(change)
m<字母> 对光标位置做标志(mark)
“<字母> 对寄存器进行操作(英文的双引号,小写字母为覆盖模式,大写字母为追加模式)
`<字母> 将光标移至标志<字母>下(Esc下面的按键)
‘<字母> 将光标移至标志<字母>所属行第一个非空白字符下(英文的单引号)

二、举例:
yw   复制光标当前位置至该单词(word)结束位置的字符串
yy   复制光标当前行
y3y  复制从光标当前行开始往下3行
……

三、实现需求:
研究以上格式(第一个y意思是我要进行复制啦,之后是我要复制的是什么呢?)得出,欲复制某一文本块,其格式是y<文本块的范围>,其中<文本块的范围>可通过m<字母>来确定,所以可通过以下步骤灵活地对文本块进行操作:
1、将光标移至欲对之操作的文本块开始或结尾字符处,m<字母>(例如ma);
2、再将光标移至该文本块的另一端的字符处(如果m标志的是文本块开始字符,则将光标移至文本块结束字符之后;如果m标志的是文本块结束字符,则将光标移至文本块开始字符下);
3、y`<字母>(例如y`a,其中“`”是“Esc”下的按键,如果用英文单引号则整行复制,切记);
4、将光标移至欲粘贴的位置,p;
5、ok,大功告成!

四、扩展:
在执行步骤3时,通过”<字母>y`<字母>(例如”ay`a,格式中的两处<字母>可以相同,因为它们是完全不相关的两个概念)可以将复制的内容放入寄存器<字母>中,然后通过”<字母>p(例如”ap)进行粘贴。

五、进一步扩展:
用以上方法将另一文本块标志,通过”<字母>y`<字母>(采用追加模式,例如”Ay`b,是大写的字母A)将该文本块追加到原寄存器<字母>中,然后还是通过”<字母>p(例如”ap)进行粘贴。

d(elete)、c(hange)对文本块的操作类似于y(ank)操作……^O^……

TAG:

有什么比看书更美妙的 引用 删除 angelets   /   2010-05-05 13:24:42
我转文都很注重版权的,不喜欢那种把别人的东西拿来当自己的行为,这位网友你多虑了
有什么比看书更美妙的 引用 删除 angelets   /   2010-05-05 13:19:22
没错,可惜我转的也没有标明出处和作者,所以我直接把转的链接标注了,你自己去追溯源头吧
引用 删除 scuallan   /   2010-04-29 09:22:59
说了“// 版权所有,欢迎引用,但请标明出处和作者……^O^……“……

文章来源:ChinaUnix.net 的 hothost 发表于 2004-11-20 16:43
 

评分:0

我来说两句

Open Toolbar