将通用缓冲区附加到VI中每行的末尾

时间:2011-04-19 03:01:07

标签: text replace buffer vi

我正在尝试将通用缓冲区的内容添加到每行的末尾。我确信这很简单,但是,一小时的谷歌搜索让我无处可去。

这就是我的文件

  

::带来野营的东西
  --matches
  --tent
   - 睡袋    - 充气床
  --firewood
   - 营地炉   --skillet

我想在每一行的末尾添加“::带来露营的东西”。

到目前为止,我已经想到了这一点。

  1. / :: - >带我到有问题的路线
  2. Y - >将整行拉到一般缓冲区
  3. 我试过:%s / $ / \ p - >这在每行的末尾添加了“ p ”。
  4. 我的问题在于第3步。如何告诉“搜索和替换命令”使用“ p ”(通用缓冲区的内容)而不是“ p “角色

    非常感谢你的帮助。

5 个答案:

答案 0 :(得分:0)

只是一个建议:如果您尝试使用宏,您将能够使用'p'添加常规缓冲区的内容。

答案 1 :(得分:0)

对于第三步,而不是\ p,你应该使用ctrl-R-a。按住控制键并键入大写“R”,继续按住控件,然后键入小写“a”。

对于包含多个单词的行,请使用ctrl-R-“而不是。

答案 2 :(得分:0)

抱歉,我不得不进入vim并找出答案。

在命令模式下复制整行的方法是:

^ r“

(那是CTRL和r,然后是“)

这应该粘贴您搜索并替换命令

的整行

答案 3 :(得分:0)

我同意使用宏 - 它们非常强大。 在这种情况下,我拿了你的列表示例并将其定位在第一个冒号。 我使用y $来获取缓冲区中剩余的行。 然后我录制了宏 - 我选择了1。 Q1 Ĵ$ PQ

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

答案 4 :(得分:0)

了解了解决这个问题的一些事情......

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

\ =后面是要计算的表达式,getreg()调用获取寄存器的内容,默认情况下是vi调用的“常规缓冲区”。

相关问题