当我使用CTRL-V将(例如)在Acrobat Reader中打开的PDF中的两行文本复制到gvim中时,文本将插入 行中gvim我所在的位置,而不是位于光标的位置。 (场景:我想复制一个分散在两行的文档标题,并将其粘贴到gvim中的html标记之间)。
如果我对单行文本执行相同操作,则文本会正确粘贴到光标位置。
我该怎么做才能使它也能用两行文字(例如'粘贴没有格式化')?
重要提示:要粘贴的字符串包含两个由回车符(或类似内容)分隔的行!
解决方案
实际上有两个有效的解决方案:
答案 0 :(得分:10)
首先,似乎CTRL-V被映射到某个东西,因为通常使用CTRL-V(CTRL-V是可视块)来完成VIM中的粘贴。
其次,您所看到的行为是标准的vi [m]行为,如果您划出一条或多条整行,则粘贴将始终在当前行的上方或下方产生一条或多条线。
我不知道有任何内置的方法来实现你想要做的事情。但是你总是可以将CTRL-V重新映射到你想要的东西,即
:map <C-V> i<CR><Esc>"*P
在粘贴之后,您的光标所在的字符之间会有多行,但这种重新映射可能不是您想要的其他情况。
修改强>
好的,我找到了另一种方式。
在插入模式下,键入
CTRL-R *
这会将剪贴板缓冲区的内容粘贴到光标所在的位置。 (您也可以使用它来粘贴其他缓冲区的内容)
答案 1 :(得分:2)
如果要在粘贴之前从寄存器中删除换行符,可以使用表达式"=
:
:map <C-v> "=substitute(@*, "\n", " ", "g")<CR>p
答案 2 :(得分:1)
使用快捷键p
和P
(分别在光标之前和之前粘贴)。添加"*
以指定系统寄存器的内容(在您的情况下为Windows剪贴板)或"+
(对于UNIX)。
所以,你可以使用:
"*p
在光标前粘贴"*P
光标后粘贴"*y
复制(视觉区域,或取一个
postfix告诉Vim“要复制什么”)"*d
切(视觉区域,或用
后缀)等等。
答案 3 :(得分:1)
要从光标位置的Windows剪贴板粘贴到gVim,请使用
"+gP
不要忘记双引号。
答案 4 :(得分:1)
:set paste
在将内容粘贴到缓冲区之前
:set nopaste
恢复格式设置