复制剪切和粘贴

在 Vim 中,这些操作都是从什么,你可能会在使用几乎任何其他现代编辑器或字处理器(处理方式不同 Ctrl-C,Ctrl-X,Ctrl-V )。要理解,你需要了解一些关于寄存器和动作的知识。

注意:本节不包括视觉模式复制和剪切或范围缩写,因为这些超出了普通模式和基本编辑的范围。

寄存器

Vim 使用寄存器的概念来处理程序本身内的文本移动。Windows 有一个用于此目的的剪贴板,类似于 Vim 中的单个寄存器。在 Vim 中复制,剪切和粘贴时,有一些方法可以使用类似的简单编辑工作流程(你不必考虑寄存器),但也有更复杂的可能性。

寄存器的目标是命令的输入/输出,方法是在命令前加上 " 小写字母和小写字母名称。

议案

Vim 中的动作是将光标位置移动到其他位置的任何命令。在普通模式下复制,剪切和粘贴时,移动文本选择的可能性仅受你对运动的了解。下面将举例说明一些。

复制和剪切

基于复制和剪切操作的基本命令是 y (‘yank’,用于复制)和 d (‘delete’,用于剪切)。你将在下表中看到相似之处。

命令 : 描述
y{motion} 将动作指示的文本复制(‘yank’)到默认寄存器中
yy 当前行复制到默认的寄存器,面向行
Y 将当前行复制到默认寄存器(同义词 yy )
“ayiw 将光标所在的单词复制到寄存器’a’中
20"byy 从光标开始复制 20 行到寄存器’b’
d{motion} 将动作指示的文本剪切(‘删除’)到默认寄存器中
dd 剪切当前行到默认寄存器,面向行
D 从光标切换到行尾到默认寄存器(不是同义词 dd )
“adiw 将光标所在的字切入寄存器’a’
20"bdd 从光标开始剪切 20 行,进入寄存器’b’

注意:当复制或按切割某些内容时,下面显示的粘贴行为将在当前 (而不是光标) 之前或之后放置文本。以下示例澄清。

粘贴

根据你要完成的任务,有几种方法可以粘贴到 Vim 中。

命令 : 描述
p 粘贴光标默认寄存器中的内容
P 粘贴光标默认寄存器中的内容
“ap 在光标后粘贴寄存器’a’的内容
“cP 在光标前粘贴寄存器’c’的内容

那么,我如何执行一个真正简单的剪切和粘贴?

如果我有以下文字:

1 This line should be second
2 This line should be first

我可以通过将光标放在第 1 行并键入来进行最简单的剪切和粘贴 ddp。结果如下:

1 This line should be first
2 This line should be second

发生了什么?dd ‘将第一行(行)剪切到默认寄存器中 - 一次只包含一个东西,比如 Windows 剪贴板 - 并 p 在当前一行之后粘贴该行,该行刚刚因 dd 命令而发生变化。

这是一个不太简单的例子。我需要动一下几句话。 (这是设计和不必要的,但你可以将此原则应用于更大的代码块。)

1 These words order out are of

我可以重复 w 到’订单’前面的’o’(或者 b 如果我输入它并意识到我的错误)。

然后 “adaw 将’order’放在寄存器’a’中。

然后 w 到’是’进入’a’。

在此之后,我会输入 “bdaw ‘are’到寄存器’b’。现在我显示了这个:

1 These words out of

要清楚,现在’order’在寄存器’a’中,‘are’在寄存器’b’中,就像两个单独的剪贴板一样。

为了正确排列单词,我输入 b ‘out’中的’o’,然后 “bP 将’are’放在’out’前面的寄存器’b’中:

1 These words are out of

现在我输入 A 到行的末尾,然后 Space Esc (假设’of’之后没有空格) “ap 并将’order’放在它所属的位置。

1 These words are out of order