似乎有几种方法可以将代码粘贴到终端Vim中,而不会破坏缩进或将其转换为注释:
:set paste
+普通操作系统粘贴*
和+
进行粘贴,例如<c-o>"+p
:set mouse=a
+用鼠标粘贴我想知道哪种更好的做法/更普遍的做法?
答案 0 :(得分:2)
也许它取决于操作系统和Vim的内置功能,但在我的情况下,寄存器*
和+
在终端Vim中是空的。它们在gVim中不是空的,但gVim无论如何都能正确处理粘贴,而不设置'paste'
。因此,如果我想将某些内容粘贴到终端Vim中,我需要set paste
。
答案 1 :(得分:1)
来自normal
的粘贴不会缩进。我认为最简单,最便携的方式是<c-o>"+p
。由于它可以避免使用pastetoggle
,因此它也适用于NeoVim。
可能的无缩进/缩进地图......
inoremap <silent> <f3> <c-o>"+p
inoremap <silent> <f4> <c-r>+
虽然上面有一个小问题。它将光标留在开头而不是粘贴文本的末尾,用于粘贴而不缩进。
将光标留在同一个地方......
inoremap <silent> <f3> <c-o>:set paste<cr><c-r>+<c-o>:set nopaste<cr>
inoremap <silent> <f4> <c-o>:set nopaste<cr><c-r>+
答案 2 :(得分:0)
您可能会发现这两个设置对于将内容粘贴到终端Vim中非常有用:
set clipboard^=unnamed
set mouse=a
第一个设置enables the use of the system clipboard("*
注册表)用于从/向Vim进行yanking和粘贴,第二个设置用鼠标正确粘贴。
对pastetoggle
进行映射可能仍然有用,例如通过SSH编辑文件时。