我使用vim(在Windows上实际上是gvim)作为我的主要文本编辑器。在我的工作流程中,我必须将句子复制到各种外部源,因此我使用clipboard = unnamed来保存键击(p而不是“* p”。) 我从外部源复制文本,我想将其粘贴到vim中两个的不同位置。我标记第一个(v),然后使用p粘贴它。问题是,此时我丢失了原始缓冲区,无法将其粘贴到第二位。它在未命名的缓冲区,*缓冲区或编号的缓冲区中不存在。我的猜测是粘贴选择是将“粘贴”文本放在未命名的缓冲区中 如何将原始字符串粘贴到两个位置?即防止它从缓冲区中丢失。
感谢。
答案 0 :(得分:6)
试试这个:
:vmap p "_xP
vmap
表示制作仅适用于可视模式的映射。p
是为。"_
是黑洞注册。这适用于您想要删除文本而不影响任何寄存器的任何情况。xP
表示删除所选文本,然后在生成光标位置之前粘贴。答案 1 :(得分:1)
你可以设置一个映射来缓解你的痛苦:
:vmap <F5> "zxP
这将删除视觉选择的文本,但将其放在不同的寄存器中,这样剪贴板不会受到影响。将<F5>
更改为最适合您的任何内容。
答案 2 :(得分:1)
我不知道我是否误解了你,但我尝试了你正在做的事情,用+ drop-register做这件事我没有问题。
我的工作流程:
可悲的是,第二次粘贴时必须从+寄存器中明确粘贴。因此,我建议使用p / P映射,而不是使用clipboard = unnamed
nmap p "+p
尝试使用
:registers
查看不同寄存器的内容。
答案 3 :(得分:0)
我不知道如何在Windows上执行此操作。使用KDE,剪贴板有一个可以选择的历史记录,因此您可以进行粘贴,从剪贴板中选择以前的选择,然后粘贴到新位置。
也就是说,听起来你可能只有一个位置更有意义,然后写一个脚本来获取输入并创建你需要的输出。你能详细说明你想要完成的是什么吗?
答案 4 :(得分:0)
检查'guioptions'选项的值。确保未设置“a”标志。另外,检查'clipboard'选项并验证是否设置了'unnamed'或'autoselect'标志。
:set go-=a
:set clipboard-=unnamed