11

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

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

好的,现在我尝试剪掉第 5、6、7 行(所有那些“如果”的东西)。为此,我这样做: Vjjd。现在看来我在第 4 行的开头,这是一个空字符串。

我的问题:此时是否可以删除第 4 行而不会丢失先前复制的第 5、6、7 行(即“如果”的东西),这样我就可以将它们粘贴到其他地方,比如说,在 1 日后线?

4

3 回答 3

20

您始终可以使用“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"ad 来匹配您在原始问题中所做的事情。

于 2013-03-06T17:18:01.783 回答
7

是:你可以使用黑洞缓冲注册:类型"_dd

于 2013-03-06T17:17:39.757 回答
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
于 2013-03-06T17:18:57.047 回答