在插入模式下粘贴寄存器时,如何在Vim/Neovim中使用括号粘贴模式?

f5emj3cl  于 2023-02-23  发布在  其他
关注(0)|答案(2)|浏览(216)

当在Vim/Neovim的插入模式下从寄存器插入代码时,它不会自动使用外部术语括号粘贴(Vim)/括号粘贴模式(Neovim)。
例如,如果我在demo.js文件中存储了这个函数:

function x() {
  // comment
  alert("hey");
}

然后用i<c-r>"在插入模式下粘贴它,它会被弄乱:

function x() {
    // comment
  //   alert("hey");
  //   }
//

而在插入模式下从系统剪贴板粘贴相同的代码片段(即使用Ctrl+Shift+v)可以很好地工作,这是因为有括号粘贴功能。
我知道我可以在粘贴之前使用:set paste。但是之后我要么必须离开插入模式,要么-当Map到一个键时-按下一个键以启用粘贴模式。
有没有办法自动化呢?

y1aodyip

y1aodyip1#

:h <c-r>确实声明了以下内容:
插入的文本与键入的文本相同,但不使用Map和缩写。
所以,它不会触发任何粘贴命令或回调或任何东西。它只是一种自动输入文本的方式。
像这样的问题的答案总是一样的:离开插入模式。Vim是基于模式的,这是Vim强大的基础。插入模式不是专门用来粘贴东西的(尽管我喜欢<c-r>)。有很多东西你不能在插入模式下粘贴。

6jjcrrmo

6jjcrrmo2#

我试过用下面的Map在插入模式下粘贴系统剪贴板。到目前为止,它似乎做了我想要的。

inoremap <c-p> <c-o>:set paste<cr><c-r>+<c-o>:set nopaste<cr>

相关问题