2011-04-19 68 views
0

我试图将通用缓冲区的内容添加到每行的末尾。我相信这很简单,但是,一小时的谷歌搜索导致我无处可去。将通用缓冲区添加到VI中每行的末尾

这是我的文件看起来像

::携带物品野营
--matches
--tent
--sleeping袋
--inflatable床
--firewood
- 摄影炉
- 滑板

我想在每行的末尾加上“::带来野营的东西”。

这是我迄今弄清楚的。

  1. /:: - >使我行的问题
  2. Ÿ - >洋基整条生产线的通用缓冲器
  3. 我试过:%s/$/\ p - >这添加了一个“p”到每一行的末尾。

我的问题是步骤3.如何告诉“查找和替换命令”所使用的“p”(一般缓冲区的内容),而不是“p”字

非常感谢您的帮助。

回答

0

只是一个建议:如果你试着用宏来做,你可以使用'p'来添加一般缓冲区的内容。

0

对于第三步,而不是\ p,您应该使用ctrl-R-a。按住控制键并输入一个大写字母“R”,继续按住控制键并输入一个小写字母“a”。

对于具有多个字线,用ctrl-R-”代替。

+0

这几乎是它。不过这只贴第一个字* ::东西* – user714447 2011-04-19 03:41:09

0

对不起,我不得不进入vim和找出答案。

的方式到你的整条生产线复制在命令模式是:

^R “

(这是CTRL和r,则”)

这应该粘贴你拷贝到你的搜索整条生产线并更换COMM和

+0

非常感谢。最后一件事。我如何摆脱^ M。 – user714447 2011-04-19 03:47:29

+0

只是退格,而你仍然处于命令模式 – Kevin 2011-04-19 03:52:52

+0

如果你已经搜索并替换,然后只是做另一个搜索和替换,用什么都没有替换它,像这样:%s/^ M // g – Kevin 2011-04-19 03:57:07

0

我同意使用宏 - 它们非常强大。 在这种情况下,我把你的列表示例放在第一个冒号。 我用y $来获取缓冲区中行的其余部分。 然后我记录了宏 - 我选择了1。 q1 j $ pq

然后,您可以将它称为列表中的任意行数。例如。 10 @ 1

0

学到了一些东西搞清楚了这一个了...

:%s/$/\=getreg()/ 

的\ =说,接下来要计算的表达式,并getreg()调用获取寄存器的内容,默认情况下是由vi调用的“通用缓冲区”。