复制剪切和粘贴
在 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