2013-03-06 159 views
10

假设我有以下文字(我有编号为清晰起见,行),光标是在第5行的开头:VIM复制粘贴缓冲区

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

好吧,现在我试着切第5,6,7行(所有这些“如果”thingy)。为此我做: Vjjd。现在看起来我在第四行的开头是一个空字符串。

我的问题:是否有可能在这一刻除去4号线没有松动之前复制的行5,6,7(即“如果”啄),这样我就可以将其粘贴在其他地方比如说,在第一行之后?

+0

'(为了清晰起见,我已经编号了行)'那么这些数字在你的文本/文件中?删除3行后,第4行是空行? – Kent 2013-03-06 17:17:56

+0

不,我的文本不包含行号。 – varnie 2013-03-06 17:21:45

回答

18

您可以随时抽出,或使用“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“的广告,以配合您在原来的问题在做什么。

7

是:您可以使用黑洞缓冲寄存器:类型"_dd

+2

会是'_dd'吗? – Kent 2013-03-06 17:28:30

+0

是的,真的!让我把这个正确的答案放在我的答案中。 – Jan 2013-03-06 17:49:15

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