vim中文本块拷贝黏贴(很好很强大...)
上一篇 /
下一篇 2010-04-26 16:19:24
如何用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: