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

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


当前回答

在粘贴到终端之前,尝试:set paste,然后在完成后:set nopaste。这将关闭自动缩进,换行和其他功能,使您的粘贴一团糟。

编辑:另外,我应该指出,使用外部程序通常可以获得比=缩进更好的结果。例如,我运行:%!一直都很整洁。也可以用style, cindent等。当然,你可以将这些映射到一个击键,并根据文件类型将不同的映射到相同的击键。

其他回答

所有命令的主人是

gg=G

这将缩进整个文件!

下面是一些简单而优雅的命令,用于在Vim或gVim中快速缩进行。

缩进当前行以下的所有行

=G

缩进当前行

==

将当前行下缩进n行

n==

例如,将当前行缩进4行

4==

若要缩进代码块,请转到其中一个花括号并使用命令

=%

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

"*p
"+p

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

对于XML文件,我使用这个命令

:1,$!xmllint --format --recover - 2>/dev/null

你需要安装xmllint(包libxml2-utils)

(来源:http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html)

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

[[=]]

1 G = G。这应该会缩进文件中的所有行。1G表示第一行,=表示自动缩进,最后一个G表示文件的最后一行。