在VI中将常规缓冲区追加到每行的末尾

| 我正在尝试将常规缓冲区的内容添加到每一行的末尾。我敢肯定这很简单,但是一个小时的Google搜索使我无处可寻。 这是我的文件的样子 ::露营的事情 - 火柴 - 帐篷 - 睡袋 -充气床 - 柴 - 野营炉 -煎锅 我想在每行末尾添加\“ :: Things to camping \”的东西。 到目前为止,我已经弄清楚了。 / ::->带我到有问题的行 Y->将整行拖到常规缓冲区 我尝试了:%s / $ / \\ p->这在每行的末尾添加了一个\“ p \”。 我的问题与第3步有关。如何告诉\“ search and replace command \”使用\“ p \”(通用缓冲区的内容)而不是\“ p \”字符 非常感谢你的帮助。
已邀请:
只是一个建议:如果尝试使用宏,则可以使用\'p \'添加通用缓冲区的内容。
抱歉,我必须进入vim并找出答案。 在命令模式下复制整行的方法是: ^ r \“ (这是CTRL和r,然后是\“) 那应该将您拉动的整行粘贴到搜索和替换命令中
对于第三步,应该使用ctrl-R-a而不是\\ p。按住控制键并键入一个大写的\“ R \”,继续按住控件,然后键入一个小写的\“ a \”。 对于包含多个单词的行,请改用ctrl-R- \“。
我同意使用宏-它们非常强大。 在这种情况下,我以您的列表示例为例,并将其放在第一个冒号处。 我用y $来抓取缓冲区中剩余的行。 然后我录制了宏-我选择了1。 11 j $ pq 然后,您可以为列表中任意数量的行调用它。例如。 10 @ 1
学到了一些东西可以解决这个问题...
:%s/$/\\=getreg()/
\\ =表示,下面是要求值的表达式,并且getreg()调用获取寄存器的内容,默认情况下是vi以前调用的“通用缓冲区”。

要回复问题请先登录注册