在不注释代码的情况下如何粘贴vim?


75

每次粘贴vim时,每一行都会被注释掉。

有没有解决的办法?

Answers:


162

粘贴之前,请在普通模式下键入以下内容:

:set paste

然后进入插入模式。您会看到状态栏上显示insert (paste)。粘贴您的代码。点击ESC以返回正常模式,并:

:set nopaste

您不再处于粘贴模式。


11
为了明确起见,“粘贴模式”会同时关闭许多自动格式设置和缩进功能,从而可以安全地粘贴大块文本而不会影响内容。
以太2010年

3
别忘了签出“ pastetoggle”,这使得将这些步骤变得更容易。例如,我有:set pastetoggle = <Insert>这样,在粘贴文本之前,我只是按下了<Insert>键。然后,当我完成后,再次按它。这非常方便,因为我使用Shift- <Insert>粘贴文本
Neg_EV 2010年

将添加pastetoggle=<F2>到您的,.vimrc这样您就不必每次都设置它。如前所述,您可以根据需要将此映射到其他键。<Insert>可能是理想的选择,因为默认情况下会切换替换模式。哪个IMO是垃圾。
泰勒·克里斯蒂安

1
被回答将近9年,这对我有所帮助。谢谢!
digitalformula '19

43

或者,以避免打开paste和关闭,只是文字。在命令模式下,不要进入插入模式和粘贴:

"+p

+缓冲器对应于系统剪贴板。

如果您坚持使用paste,我建议您映射一些东西来切换它。例如,:set pastetoggle=<F2>(哇,没意识到有一个特殊的选择)


@rampion:是的,这就是我最初提到的内容,但是赞成了pastetoggle
卡斯卡贝尔

b / c存在'pastetoggle',您不能使用插入模式映射来关闭'paste'-启用'paste'会禁用插入模式映射。
graywh's

2
这对我没用吗?任何对此无效的压倒一切?
serup '16

同样重要的是要避免剪贴板入侵安全问题:我而言inoremap <C-R>+ <C-R><C-R>+
thejh.net / misc / website

1
当我运行“ + p时,什么都没发生?
Leo Ufimtsev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.