gpt4 book ai didi

vim - 为什么 vim 粘贴的行为取决于 yanking 方法

转载 作者:行者123 更新时间:2023-12-04 23:36:18 25 4
gpt4 key购买 nike

根据我拉线的方式,我看到不同的粘贴行为。我想知道为什么。

如果我从正常模式开始猛拉一条线:

^v$y
^到行首
v进入视觉模式
$到行尾
y猛拉

然后我使用 p粘贴,它按预期工作。

但是,当我从正常模式开始并逐行使用视觉模式时:
Vy
V逐行进入视觉模式
y猛拉

然后我使用 p粘贴,我看到该行粘贴在当前行下方。这就像粘贴操作是先打开一个新行,然后在那里粘贴。

例子。开头的几行:
Line1
Line2
Line3. Insert here

我使用方法 1 猛拉 Line2。

我将光标移动到 Line3 的点并按 p粘贴。我得到这个结果:
Line1
Line2
Line3.Line2
Insert here

但是当我使用 yanking 方法二做同样的事情时,我得到了这个结果:
Line1
Line2
Line3. Insert here
Line2

如果 :registers 的内容在两种情况下都相同,为什么粘贴的效果不同?

编辑:

找到答案 here

即使寄存器内容相同;寄存器的类型根据 yanking 方法而不同,不同的寄存器类型使粘贴做不同的事情。

最佳答案

解释

如果仔细观察,您应该会发现是否使用过 v$ 的不同之处。或 V :

:registers ab
--- Registers ---
"a foo
"b foo^J

那个 ^J是表示 的换行符全线已被猛拉。

Action 要么影响整行,要么影响开始和结束位置之间的字符。在 Vim 中,这被称为 :help linewise 和性格。这同样适用于视觉模式( <C-V> 有第三种模式,称为 blockwise)。所以,你拉东西的方式会有所不同!您可以在 :registers 中看到这一点命令,也可以通过 :help getregtype() 查询功能,但在实践中,这很少令人惊讶(一旦您掌握了这个概念)。

使用插件启动

我经常需要将寄存器内容“强制转换”为某种(逐字符/逐行/逐块)模式,我写了 UnconditionalPaste plugin为了它。它提供 gcp , glp等强制特定模式的内置粘贴命令的替代方案(以及现在该主题的更多变体,例如用逗号或查询字符连接粘贴)。

有了它,您只需使用 gcp/ gcP在光标位置之后/之前粘贴,无论您是如何拉取文本的(例如,通过 V 从按行视觉模式,如您的问题)。

关于vim - 为什么 vim 粘贴的行为取决于 yanking 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53079244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com