当使用 Vim/Neovim 在插入模式下从寄存器插入代码时,它不会自动使用 xterm-bracketed-paste(Vim) / bracketed-paste-mode(Neovim)。
例如,如果我
y
在demo.js
文件中添加了这个函数:
function x() {
// comment
alert("hey");
}
然后用
i<c-r>"
以插入模式粘贴它会搞砸:
function x() {
// comment
// alert("hey");
// }
//
而在插入模式下从系统剪贴板粘贴相同的片段(即使用 Ctrl+Shift+v)由于括号粘贴功能而工作正常。
我知道我可以在粘贴前使用
:set paste
。但是然后我要么必须离开插入模式,要么 - 当映射到一个键时 - 按一个键以启用粘贴模式。
有没有办法自动化这个?
:h <c-r>
确实陈述了以下内容:
插入的文本就像您键入的一样,但映射和缩写 没有使用。
所以,它不会触发任何粘贴命令或回调或任何东西。它只是一种自动输入文本的方式。
类似问题的答案总是一样的:离开插入模式。 Vim 是基于模式的,这是 vim 强大功能的基础。插入模式不是专门用来粘贴东西的(虽然我喜欢
<c-r>
)。在插入模式下有很多东西你不能做。