2011-06-10 102 views
8

我知道如何复制到剪贴板,但我如何追加到剪贴板?VIM:追加到剪贴板

p.e.我在我的代码中使用这个
let @+ = my_expression

但是覆盖剪贴板。

我知道我可以使用寄存器a-z来追加到
p.e. let @B = my_expression
附加到寄存器b

但是当我想追加到剪贴板时该怎么办?

回答

13

使用:

let @+ = @+ . my_expression 

或更短:

let @+ .= my_expression 

参考::help :let.=

+0

太简单了! :) 非常感谢你! – Reman 2011-06-10 08:47:07

8

如果你不是宏观ING,它可能是值得一试registers为好。 :help registers是令人兴奋的。

简而言之,还有26个额外的“可定制的剪贴板”,称为寄存器,您可以在其中存储文本,从a开始,并通过z。通过点击"命名寄存器(如f),然后输入要选择文本的“动作”,可以在命令模式下向寄存器添加文本。

复制用的寄存器(光标在[T]):

初始文件状态

This is my first line. 
[T]his is my second line. 
This is my third line. 

类型"fyy在命令模式来填充寄存器与一个线路(yy)。输入p(*见下文)立即粘贴。因此,键入"fyyp的结果与使用默认剪贴板键入yyp完全相同。

结果

This is my first line. 
This is my second line. 
[T]his is my second line. 
This is my third line. 

追加到寄存器:

使用大写字母追加到现有的寄存器。在上面的例子中,粘贴后,按j下去一行然后"Fyy。然后键入p进行粘贴。你已经追加“这是我的第三行。” f的内容。

结果

This is my first line. 
This is my second line. 
This is my second line. 
This is my third line. 
This is my second line. 
[T]his is my third line. 

(使用小写f会清除出f的内容,并结束了它只是抱着‘这是我的第三条线。’)

我的天堂没有找到一种追加到默认寄存器的方法,所以你在访问“命名”寄存器时遇到了一些额外的按键操作,但只需要一点点工作,它就是一种简单的方法来即时追加到“剪贴板”。

  • 为什么p贴什么是注册f后立即抽出到f?因为你的默认寄存器保存了最后一个选择,并且显然不会简单地保存你添加到f的内容,而是在追加时取出所有在f中的内容。在第一种情况下,可能更容易说出:“输入"fyy"fp的结果与使用默认剪贴板输入yyp完全相同。”
+0

尽管现在[我明白](http://vim.1045645.n5.nabble.com/how-to-copy-non-continuous-matched-lines-int-clipboard-tp1164018p1164021.html)*'@ + '是剪贴板寄存器,以防万一。* – ruffin 2013-06-05 19:44:35

+0

而downvote是为了?请评论,以便我可以修复/整合/解决您的隐含批评。 – ruffin 2013-06-07 13:23:16