Text 将通用缓冲区追加到VI中每一行的末尾

Text 将通用缓冲区追加到VI中每一行的末尾,text,replace,buffer,vi,Text,Replace,Buffer,Vi,我试图将常规缓冲区的内容添加到每行的末尾。我相信这相当简单,然而,一个小时的谷歌搜索让我一事无成 这就是我的文件的样子 ::露营时要带的东西 -火柴 -帐篷 -睡袋 -充气床 -柴火 -野营炉 -煎锅 我想添加一些东西,让露营成为每一行的结尾 这是我到目前为止发现的 /:->让我来谈谈这个问题 Y->将整条线拉到通用缓冲区 我尝试了:%s/$/\p->这在每行末尾添加了一个p。 我的问题是步骤3。如何告诉search and replace命令使用p表示常规缓冲区的内容,而不是p表示字符 非常感

我试图将常规缓冲区的内容添加到每行的末尾。我相信这相当简单,然而,一个小时的谷歌搜索让我一事无成

这就是我的文件的样子

::露营时要带的东西 -火柴 -帐篷 -睡袋 -充气床 -柴火 -野营炉 -煎锅

我想添加一些东西,让露营成为每一行的结尾

这是我到目前为止发现的

/:->让我来谈谈这个问题 Y->将整条线拉到通用缓冲区 我尝试了:%s/$/\p->这在每行末尾添加了一个p。 我的问题是步骤3。如何告诉search and replace命令使用p表示常规缓冲区的内容,而不是p表示字符


非常感谢您的帮助。

只是一个建议:如果您尝试使用宏执行此操作,您将能够使用“p”添加常规缓冲区的内容

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


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

对不起,我必须进入vim并找到答案

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

^r

那就是CTRL和r


这应该会粘贴你在搜索和替换命令中的整行内容,我同意使用宏,它们非常强大。 在本例中,我以列表为例,将其定位在第一个冒号处。 我使用y$获取缓冲区中的剩余行。 然后我录制了宏-我选择了1。 q1 j$pq


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

我学到了一些东西,弄明白了这一点

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

\=表示下面是一个要求值的表达式,getreg调用获取寄存器的内容,默认情况下是vi调用的通用缓冲区。

这几乎可以做到。不过这只是粘贴第一个单词::thing非常感谢。最后一件事。如何去掉^M。如果您已经搜索并替换了它,那么只需执行另一次搜索并替换,以不替换它,例如:%s/^M//git实际上是这样的:%s/^M/另一个斜杠转义了特殊字符^实际上您键入的命令是%s/^v^M//g-control v将允许您键入控件M