根据我如何拉线,我看到不同的粘贴行为。我想知道为什么。
如果我从普通模式开始拉线:
^v$y
^
转到行首
v
进入视觉模式
$
转到行尾
y
要拉动
然后我用p
粘贴,它可以按预期工作。
但是,当我从普通模式开始以直线方式使用可视模式抽出一条线时:
Vy
V
逐行进入可视模式
y
要拉动
然后使用p
进行粘贴,我看到该行粘贴在当前行下方。就像粘贴操作是先打开新行,然后粘贴到那里。
示例。开头的行:
Line1
Line2
Line3. Insert here
我使用方法1拉动Line2。
我将光标移至Line3的点,然后按p
进行粘贴。我得到这个结果:
Line1
Line2
Line3.Line2
Insert here
但是当我使用两种方法进行相同的操作时,会得到以下结果:
Line1
Line2
Line3. Insert here
Line2
如果两种情况下:registers的内容相同,为什么粘贴效果不同?
编辑:
找到答案here
即使寄存器内容相同;寄存器的类型因拉取方法的不同而不同,并且不同的寄存器类型会使粘贴执行不同的操作。
答案 0 :(得分:6)
如果仔细观察,您会发现使用v$
还是V
有所不同:
:registers ab
--- Registers ---
"a foo
"b foo^J
^J
是换行符,表示整个行已被删除。
动作要么影响整行,要么影响开始和结束位置之间的字符。在Vim内部,按字符分别称为:help linewise
。视觉模式也是如此(<C-V>
的第三种模式称为逐块模式)。因此,如何处理东西就大有不同了!您可以在:registers
命令中看到它,也可以通过:help getregtype()
函数查询它,但是在实践中,这很少会让人感到意外(一旦您掌握了这个概念)。
我经常需要将注册内容“广播”到某种(字符/行/块)模式,为此我写了UnconditionalPaste plugin。它提供gcp
,glp
等替代强制某种模式的内置粘贴命令(到目前为止,此主题还有更多变体,例如粘贴逗号或查询字符)
有了它,您就可以使用gcp
/ gcP
在光标位置之后/之前粘贴,而不管您是如何拉动文本的(例如,通过{{1} },就像您的问题一样。
答案 1 :(得分:1)
找到答案here
即使寄存器内容相同;寄存器的类型根据拉动方法的不同而不同。寄存器类型使粘贴做不同的事情。
您可以通过键入:echo regtype('"')
答案 2 :(得分:0)
我建议使用<li class="car" data-id="car1">
<img src="https://imageurl.com/currentImage" alt="">
</li>
<li class="car" data-id="car12">
<img src="https://imageurl.com/currentImage" alt="">
</li>
<li class="car" data-id="car2">
<img src="https://imageurl.com/currentImage" alt="">
</li>
<li class="car" data-id="car7">
<img src="https://imageurl.com/currentImage" alt="">
</li>
代替Vy
,也可以使用yg_
,但您要键入一个额外的字符。所以:
vg_y
OBS:yg_ ................... yank until the last character of the line
不包含换行符。欲了解更多g_
从该行的第一个字符到没有新行的最后一个字符进行选择:
:h g_