如果我从正常模式开始划线:
^v$y
^去行的开头
v进入可视模式
$到最后一行
你要猛拉
然后我使用p粘贴它按预期工作.
但是,当我从正常模式开始并使用直线视觉模式拉线时:
Vy
V按行进入可视模式
你要猛拉
然后我使用p粘贴,我看到该行被粘贴在当前行下方.这就像粘贴操作首先打开一个新行然后粘贴那里.
例.开头的行:
Line1 Line2 Line3. Insert here
我用方法1猛拉了Line2.
我将光标移动到Line3的点,然后按p粘贴.我得到这个结果:
Line1 Line2 Line3.Line2 Insert here
但是当我使用yanking方法做同样的事情时,我得到了这个结果:
Line1 Line2 Line3. Insert here Line2
如果:寄存器的内容在两种情况下是相同的,为什么粘贴工作不同?
编辑:
找到答案here
解决方法
如果仔细观察,您应该看到是否使用了v $或V:
:registers ab --- Registers --- "a foo "b foo^J
^ J是换行符,表示整条线已经被拉出.
动作要么影响整行,要么影响开始和结束位置之间的字符.在Vim内部,这被称为:help linewise
和字符.这同样适用于视觉模式(并且< C-V>第三模式称为blockwise).所以,它会对你如何猛拉东西产生影响!你可以在:registers命令中看到这个,也可以通过:help getregtype()
函数查询它,但在实践中,这很少出人意料(一旦你掌握了这个概念).
通过插件启动
我需要将寄存器内容“转换”成某种(字符/线性/块状)模式,所以我经常为它编写UnconditionalPaste plugin.它提供了强制某种模式的内置粘贴命令的gcp,glp等替代方法(此时此主题有几种变体,例如用逗号或查询字符连接粘贴).
有了它,您可以使用gcp / gcP粘贴光标位置之前/之后,无论您如何拉动文本(例如,从您的问题中通过V的线性视觉模式).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。