Vim 从外部源复制和粘贴

Vim 从外部源复制和粘贴,vim,Vim,我在windows上使用vim作为我的主文本编辑器。在我的工作流程中,我必须将句子复制到各种外部来源,因此我使用clipboard=unnamed来保存我的关键点笔划p,而不是*p。 我从外部源复制文本,并希望将其粘贴到vim中的两个不同位置。我把第一个标记为v,然后用p在上面粘贴。问题是,此时我丢失了原始缓冲区,无法将其粘贴到第二个位置。它不存在于未命名缓冲区、*缓冲区或编号缓冲区中。我的猜测是,粘贴覆盖选择就是将粘贴覆盖的文本放在未命名的缓冲区中。 如何将原始字符串粘贴到两个位置?i、 e.

我在windows上使用vim作为我的主文本编辑器。在我的工作流程中,我必须将句子复制到各种外部来源,因此我使用clipboard=unnamed来保存我的关键点笔划p,而不是*p。 我从外部源复制文本,并希望将其粘贴到vim中的两个不同位置。我把第一个标记为v,然后用p在上面粘贴。问题是,此时我丢失了原始缓冲区,无法将其粘贴到第二个位置。它不存在于未命名缓冲区、*缓冲区或编号缓冲区中。我的猜测是,粘贴覆盖选择就是将粘贴覆盖的文本放在未命名的缓冲区中。 如何将原始字符串粘贴到两个位置?i、 e.防止其从缓冲器中丢失


谢谢。

我不知道在Windows上怎么做。使用KDE,剪贴板有一个历史记录,您可以从中选择,因此您可以执行粘贴,从剪贴板中选择上一个选择,然后粘贴到新位置


这就是说,如果只在一个位置使用它,然后编写一个脚本来获取输入并创建所需的输出,听起来可能更有意义。你能详细说明一下你想要完成什么吗?

你可以设置一个映射来减轻痛苦:

:vmap <F5> "zxP

这将删除视觉上选定的文本,但将其放在不同的寄存器中,因此剪贴板不会受到影响。更改为最简单的选项。

检查“GUI选项”选项的值。确保未设置“a”标志。此外,请检查“剪贴板”选项,并确认未设置“未命名”或“自动选择”标志

:set go-=a
:set clipboard-=unnamed

我不知道我是否误解了你的意思,但我尝试了你正在做的事情,我用+删除寄存器做这件事没有问题

我的工作流程:

在外部应用程序(如浏览器)中复制句子 在vim中选择一个句子,并将其替换为+p或带有剪贴板的p=未命名集 目视选择另一个句子,并将其替换为+p 遗憾的是,第二次粘贴时,您必须从+寄存器显式粘贴。因此,我建议使用p/p映射,而不是使用clipboard=unnamed

nmap p "+p
试用

:registers
要查看不同寄存器的内容,请尝试以下操作:

:vmap p "_xP
vmap意味着制作仅适用于可视模式的映射。 p是为创建映射的键。 _这是黑洞记录。这适用于您希望删除文本而不影响任何寄存器的任何情况。 xP表示删除所选文本,然后在生成的光标位置之前粘贴。
我正在尝试从不同的应用程序复制一行,并将其粘贴到vim中的两个位置。就这么简单。这就是它的原理,是的。我在问你是否应该退后一步,想想你想要完成的任务——有没有更好的方法不涉及重复的剪切粘贴?我不知所措。有一段文字我需要粘贴在两个不同的地方,有什么想法吗?谢谢你的回答,但我似乎无法正确地实现它。同样,我的工作顺序是复制外部程序,在Vim粘贴上标记要替换的文本。在Vim中标记另一位文本,然后我无法粘贴复制的文本。我尝试用+p粘贴,但得到了相同的结果。我把你的答案弄错了吗?我使用clipboard=unnamed。所以我在笔记本电脑上安装了Vim,并检查了我的第一个答案,它不工作。我用一个新建议编辑了我的答案。我猜是“无名”旗的出现给你带来了麻烦。谢谢你的回答。我在Windows机器上工作,所以当我检查:寄存器时,我没有+寄存器。此外,没有任何寄存器包含我从外部应用程序复制的文本,甚至*寄存器也不包含,它会被我在插入模式下复制的文本覆盖。shift+insert