Vim复制粘贴缓冲区

11

假设我有以下文本(为了清晰起见,我已经给每行编了号),并且光标位于第5行的开头:

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

好的,现在我尝试删掉第5、6、7行(所有的“if”语句)。为此,我使用命令:Vjjd。现在我发现我已经到了第4行的开头,那是一个空字符串。

我的问题是:在这个时候,是否可以删除第四行,同时不失去之前复制的第5、6、7行(那些“if”语句),以便我稍后能够将它们粘贴到其他地方,比如第1行?


(我为了清晰起见编号了这些行)那么这些数字是在你的文本/文件中吗?删除3行后,第4行是空行吗? - Kent
不,我的文本没有行号。 - varnie
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,以匹配你在原始问题中所做的操作。


7

可以使用黑洞缓冲区 register:输入"_dd

。这将直接删除当前行,而不将其放入任何寄存器中。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接