如何解决Vim使用正则表达式删除行并将其添加到注册表
我有以下映射:
<svg id="svgelem" height="100" width="100" xmlns="http://www.w3.org/2000/svg">
<circle cx="100" cy="50" r="20" stroke="black" stroke-width="3.6" fill="#1f2b6a" />
</svg>
哪个通过正则表达式搜索删除了多行,但是,这些行只是被删除了,我希望它们进入注册表,以便在运行这些命令后可以将它们插入。
可以通过此正则表达式搜索和删除来实现吗?
编辑: 我可以看到它们已添加到不同的寄存器中,是否可以将ex命令保存到单个寄存器中?
解决方法
说明我的解决方案vnoremap <leader>daa "hyqeq:g/<c-r>h/d E<cr>
:
-
"hy
将视觉选择存储到@h
-
qeq
等同于删除@e
的内容 -
g//
是命令:d
,但它使用大写寄存器@E
,这意味着它将在其中添加新内容,而不是覆盖
d E
之后的但是,这有一些缺点:
- 在映射中使用
<c-r>h
可能会中断命令,例如如果所选内容包含斜杠字符;您可以通过在模式中添加\V
来避免一些不愉快的情况,但这远非完美:vnoremap <leader>daa "hyqeq:g/\V<c-r>h/d E<cr>
-
@e
寄存器的前面是多余的空行
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。