在终端中粘贴代码 Vim (:set paste vs <c-r>* vs ..)
Pasting code in a terminal Vim (:set paste vs <c-r>* vs ..)
似乎有几种方法可以将代码粘贴到终端中 Vim w/o 破坏缩进或将其变成注释:
:set paste
+普通OS粘贴
- 使用寄存器
*
和 +
进行粘贴,例如<c-o>"+p
:set mouse=a
+ 鼠标粘贴
- ?
我想知道哪种方法更好/更通用?
也许这取决于 OS 和构建的功能 Vim,但在我的例子中,寄存器 *
和 +
在终端 Vim 中是空的.它们在 gVim 中不为空,但 gVim 无论如何都能正确处理粘贴,无需设置 'paste'
。因此,如果我想将某些内容粘贴到终端 Vim,我需要 set paste
.
从 normal
粘贴不会缩进。我认为最简单、最便携的方式是<c-o>"+p
。因为它避免了 pastetoggle
,它也可以与 NeoVim 一起工作。
可能 no-indent/indent 个地图...
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>+
您可能会发现这两个设置对于将内容粘贴到终端中很有用Vim:
set clipboard^=unnamed
set mouse=a
第一个设置 enables the use of the system clipboard("*
寄存器)用于拖动和粘贴 from/to Vim,第二个设置使鼠标粘贴正常工作。
pastetoggle
的映射可能仍然有用,例如通过 SSH 编辑文件时。
似乎有几种方法可以将代码粘贴到终端中 Vim w/o 破坏缩进或将其变成注释:
:set paste
+普通OS粘贴- 使用寄存器
*
和+
进行粘贴,例如<c-o>"+p
:set mouse=a
+ 鼠标粘贴- ?
我想知道哪种方法更好/更通用?
也许这取决于 OS 和构建的功能 Vim,但在我的例子中,寄存器 *
和 +
在终端 Vim 中是空的.它们在 gVim 中不为空,但 gVim 无论如何都能正确处理粘贴,无需设置 'paste'
。因此,如果我想将某些内容粘贴到终端 Vim,我需要 set paste
.
从 normal
粘贴不会缩进。我认为最简单、最便携的方式是<c-o>"+p
。因为它避免了 pastetoggle
,它也可以与 NeoVim 一起工作。
可能 no-indent/indent 个地图...
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>+
您可能会发现这两个设置对于将内容粘贴到终端中很有用Vim:
set clipboard^=unnamed
set mouse=a
第一个设置 enables the use of the system clipboard("*
寄存器)用于拖动和粘贴 from/to Vim,第二个设置使鼠标粘贴正常工作。
pastetoggle
的映射可能仍然有用,例如通过 SSH 编辑文件时。