在Vim中,纠正所有行缩进的命令是什么?

通常情况下,我将代码复制并粘贴到远程终端,然后把整个事情搞砸了。我想一下子解决这个问题。


当前回答

:设置粘贴是你的朋友,我使用putty,最终在窗口之间复制代码。在我开始使用:set paste(和:set nopaste)之前,复制/粘贴正是因为这个原因让我感到不适。

其他回答

只需在vim中进入可视模式,选择后按=,从上到下选择行,所有选中的行将被缩进。

=时,indent命令可以进行动作。gg表示文件的开始,=表示缩进,G表示文件的结尾,gg=G。

如果你想重新缩进你所在的块,而不需要输入任何和弦,你可以这样做:

[[=]]

对于复杂的c++文件,当使用vim的= filter命令时,vim并不总是能得到正确的格式。因此,对于这种情况,最好使用外部c++格式化程序,如style(或uncrustify),例如:

:%!astyle

Vim的'='函数默认使用内部格式化器(这并不总是正确的),但也可以使用外部格式化器设置它,如style,通过在这个问题中讨论的适当设置。

如果你不想使用:设置粘贴,中键单击,设置不粘贴,你也可以粘贴剪贴板的内容:

"*p
"+p

这样你就不用离开正常模式了。 如果您必须粘贴+或*取决于您如何选择文本,请参阅:help quoteplus。