Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 为什么yyp不按照p的文件行事_Vim_Paste_Yank - Fatal编程技术网

Vim 为什么yyp不按照p的文件行事

Vim 为什么yyp不按照p的文件行事,vim,paste,yank,Vim,Paste,Yank,我只是想知道是否有人能解释一下yyp的行为背后发生了什么 给定一些文本: Text that can be copied 当光标在直线中间时,键入YYP,比如说在CAN之前,得到: Text that can be copied Text that can be copied 这虽然非常有用且合乎逻辑,但并不是p通常所做的 当p粘贴在光标之后,而我的光标仍在can之前时,我不认为我会错误地期望出现以下情况: Text that Text that can be copied can be c

我只是想知道是否有人能解释一下yyp的行为背后发生了什么

给定一些文本:

Text that can be copied
当光标在直线中间时,键入YYP,比如说在CAN之前,得到:

Text that can be copied
Text that can be copied
这虽然非常有用且合乎逻辑,但并不是p通常所做的

当p粘贴在光标之后,而我的光标仍在can之前时,我不认为我会错误地期望出现以下情况:

Text that Text that can be copied can be copied
虽然我同意前者更有用,但有人能解释为什么以及如何在这些情况下忽略p的默认行为吗。Vim动作要么覆盖一系列字符,要么覆盖整行字符。类似地,被拉入寄存器的文本要么由包括换行符但不以一个换行符结尾的字符组成,要么由以换行符结尾的完整行组成,要么由按块视觉选择的文本块组成。粘贴时,插入点由源寄存器确定,因此完整的行将粘贴在单独的行上。该命令指示第一列中带有c/l/b的每个寄存器的类型

:reg abc
Type Name Content
c  "a   a word
l  "b   a line^J
b  "c   a block^Jof text
我同意你的观点,默认行为是有用的。但有时,覆盖该行会很有帮助,例如,将不完整的文本粘贴为单独的行,或在现有行中插入完全删除的行。Vim提供了按您想要的方式插入寄存器内容的方法,但是您必须记住它,并且需要输入几个键。我经常需要将寄存器内容转换为特定的字符/行/块模式,为此我编写了。它提供了gcp、glp等替代内置粘贴命令的选项,这些命令强制使用特定模式,目前在该主题上还有多个变体,如使用逗号或查询字符进行粘贴。

中对此进行了解释。Vim动作要么覆盖一系列字符,要么覆盖整行字符。类似地,被拉入寄存器的文本要么由包括换行符但不以一个换行符结尾的字符组成,要么由以换行符结尾的完整行组成,要么由按块视觉选择的文本块组成。粘贴时,插入点由源寄存器确定,因此完整的行将粘贴在单独的行上。该命令指示第一列中带有c/l/b的每个寄存器的类型

:reg abc
Type Name Content
c  "a   a word
l  "b   a line^J
b  "c   a block^Jof text

我同意你的观点,默认行为是有用的。但有时,覆盖该行会很有帮助,例如,将不完整的文本粘贴为单独的行,或在现有行中插入完全删除的行。Vim提供了按您想要的方式插入寄存器内容的方法,但是您必须记住它,并且需要输入几个键。我经常需要将寄存器内容转换为特定的字符/行/块模式,为此我编写了。它提供了gcp、glp等。可替代内置的粘贴命令,这些命令强制执行特定模式,目前在该主题上还有多个变体,例如使用逗号或查询字符进行粘贴。

在Vim中,被拖动的文本存储在称为寄存器的内部变量中。然而,Vim中的寄存器不仅保留文本本身,而且还保留文本的类型(字符、行或块),就像视觉模式一样

所以yy保存了可以用行类型复制的文本。因此,p命令尊重这一点,并将其放在自己的行上


您可以通过以下方式进行更改:call setreg、@、'c'在末尾保留换行符,但覆盖内部类型或使用0y$等拖动它。

在Vim中,拖动的文本存储在称为寄存器的内部变量中。然而,Vim中的寄存器不仅保留文本本身,而且还保留文本的类型(字符、行或块),就像视觉模式一样

所以yy保存了可以用行类型复制的文本。因此,p命令尊重这一点,并将其放在自己的行上

您可以通过以下方式进行更改:call setreg、@、'c'在末尾保留换行符,但覆盖内部类型或使用0y$等将其拖动