从外部源复制和粘贴

时间:2009-10-13 19:17:37

标签: vim

我使用vim(在Windows上实际上是gvim)作为我的主要文本编辑器。在我的工作流程中,我必须将句子复制到各种外部源,因此我使用clipboard = unnamed来保存键击(p而不是“* p”。) 我从外部源复制文本,我想将其粘贴到vim中两个的不同位置。我标记第一个(v),然后使用p粘贴它。问题是,此时我丢失了原始缓冲区,无法将其粘贴到第二位。它在未命名的缓冲区,*缓冲区或编号的缓冲区中不存在。我的猜测是粘贴选择是将“粘贴”文本放在未命名的缓冲区中 如何将原始字符串粘贴到两个位置?即防止它从缓冲区中丢失。

感谢。

5 个答案:

答案 0 :(得分:6)

试试这个:

:vmap p "_xP
  • vmap表示制作仅适用于可视模式的映射。
  • p是为。
  • 创建映射的关键
  • "_是黑洞注册。这适用于您想要删除文本而不影响任何寄存器的任何情况。
  • xP表示删除所选文本,然后在生成光标位置之前粘贴。

答案 1 :(得分:1)

你可以设置一个映射来缓解你的痛苦:

:vmap <F5> "zxP

这将删除视觉选择的文本,但将其放在不同的寄存器中,这样剪贴板不会受到影响。将<F5>更改为最适合您的任何内容。

答案 2 :(得分:1)

我不知道我是否误解了你,但我尝试了你正在做的事情,用+ drop-register做这件事我没有问题。

我的工作流程:

  1. 复制外部应用程序(即浏览器)中的句子
  2. 在vim中直观地选择一个句子并用“+ p p (用clipboard =未命名的集合)替换它
  3. 直观地选择另一个句子并将其替换为“+ p
  4. 可悲的是,第二次粘贴时必须从+寄存器中明确粘贴。因此,我建议使用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