用于python代码段的vim适当缩进
在编辑Python代码时,我很难使用vimsmart缩进vim特性。一般来说,我喜欢vim中的用于python代码段的vim适当缩进,python,vim,insert,Python,Vim,Insert,在编辑Python代码时,我很难使用vimsmart缩进vim特性。一般来说,我喜欢vim中的:set nocompatible选项,以及:set autoindent(和/或:set smartindent)。除了一个非常恼人的行为外,一切都很好。假设您编写了一些代码,然后希望插入一个从其他地方获取的Python代码片段。python代码段可能包含注释,例如 # comment1 a=1 # comment2 b=1 在vim中,当您进入插入模式(例如键入o)并粘贴代码时,vim将执行大量缩
:set nocompatible
选项,以及:set autoindent
(和/或:set smartindent
)。除了一个非常恼人的行为外,一切都很好。假设您编写了一些代码,然后希望插入一个从其他地方获取的Python代码片段。python代码段可能包含注释,例如
# comment1
a=1
# comment2
b=1
在vim中,当您进入插入模式(例如键入o)并粘贴代码时,vim将执行大量缩进代码的工作,而不是获得代码片段
# comment1
# a=1
# # comment2
# b=1
因此,它在第一条注释之后插入附加注释(磅符号),并将其保留到代码段的其余部分。现在想象一下,您有相当长的具有不同标识的代码段,您可以想象粘贴操作的丑陋程度(代码将不正确地缩进和注释)
有没有办法解决这个问题
解决此问题的唯一方法是将vim兼容模式与noautoindent
选项一起设置,然后粘贴代码段。这样做将正确插入(按原样)。但是在模式之间切换(nocompatible
vscompatible
)太多了(称我为lazy,但这应该是在nocompatible
模式下正确插入带有注释的代码段的一种方式)。在nocompatilbe
模式中设置noautoindent
没有任何区别(问题仍然存在),因此它与兼容/nocompatible模式有关。您需要的选项是
set paste
它会将您想要的内容粘贴为原始内容。最好键入
:设置粘贴
在粘贴之前切换选项,然后在粘贴之后,您可以回到命令行,然后
立即再次切换。这正是我想要的。感谢您的宝贵提示。虽然设置粘贴
是解决此问题的正确方法,但我觉得应该指出,插入注释字符是因为格式选项设置的“r”标志,以防有人试图禁用此行为。