vim复制粘贴缓冲区

时间:2013-03-06 17:11:55

标签: vim

假设我有以下文字(为了清晰起见,我对行进行了编号),光标位于第5行的开头:

1
2 var x = 1;
3 var y = 2;
4 
5 if (true) {
6     print("Hey!");
7 }

好的,现在我尝试削减第5,6,7号线(所有这些都是“if”thingy)。为此我做: Vjjd。现在看来我在第4行的开头,这是一个空字符串。

我的问题:此时是否可以移除第4行而不会丢失之前复制的第5,6,7行(即“if”thingy),以便我能够比如说,在第一行之后将它们粘贴到其他地方?

3 个答案:

答案 0 :(得分:19)

你总是可以使用“n”来抽取或删除到寄存器中,其中n几乎是任何键。请参阅“帮助寄存器”中的可用寄存器列表,其中一些具有特殊含义。例如,您可以执行以下操作:

> "a3dd (to delete the last three lines into a register called a)
> dd (to delete the blank line) 
> "ap (to paste the a register)

您还可以使用Vjj“广告,以匹配您在原始问题中所做的事情。

答案 1 :(得分:7)

是:您可以使用黑洞 buffet 注册:输入"_dd

答案 2 :(得分:3)

如果您的#4行空行,则很容易,您不必使用注册。只是做:

kJ

意思是:

k: move to #3
J: (shift-J) Join #3 and #4

或者您更喜欢在INSERT模式下执行此操作。

i<BS>

I<c-u>

如果该行不为空:

  • 使用寄存器存储3行或#4,如@Derek建议
  • 使用像@Jan建议的黑洞注册
  • 或使用编号的寄存器

说,现在你刚刚做了3dd(没有命名寄存器),光标在非空行(#4)上,你可以直接做dd。 3条线没有消失。您可以通过以下方式再次粘贴它们:

"2p