如何在Vi中修复整个文件的缩进?

mmc*_*ole 611 vi vim indentation

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

很多时候我会将代码复制并粘贴到远程终端中并使整个过程搞砸了.我想一举解决这个问题.

Log*_*ldo 1179

=,缩进命令可以采取动作.因此,gg要获取文件的开头,=缩进,G到文件的末尾,gg=G.

  • @Fábio:''''(两个单引号)带你回到你所在的位置,所以`gg = G''`应该缩进然后返回. (81认同)
  • 我永远无法忘记我珍贵的1G =)我最喜欢的一个是=%站在开口支架上.它修复了整个块的缩进. (37认同)
  • 它似乎不适用于Mac OS VIM (9认同)
  • 我可以在不离开当前行的情况下缩进整个文件吗? (7认同)
  • :0<return> 还不错,但 gg 很好。(是的,我先学了ed) (2认同)

der*_*ert 121

在粘贴到终端之前,尝试:set paste(然后:set nopaste在完成之后).这将关闭搞乱粘贴的自动缩进,换行等功能.

编辑:另外,我应该指出,通常可以通过使用外部程序获得比=缩进更好的结果.例如,我=一直在运行.也可以使用astyle,cindent等.当然,您可以将它们映射到键击 - 并根据文件类型将不同的键映射到相同的击键

  • 你可以在ftplugin中设置`equalprg`选项,使用外部过滤器来进行`=`缩进,而不是自定义键绑定. (5认同)

And*_*ner 30

如果你想重新加入你所在的块而不必键入任何和弦,你可以这样做:

[[=]]
Run Code Online (Sandbox Code Playgroud)

  • 这里的"和弦"是指通过按住一个键同时按下另一个键而发出的命令,类似于音乐和弦,同时发出几个音符.所以G是shift + g,^]是ctrl +],依此类推.这些输入比单键绑定需要更长的时间. (6认同)
  • 在北欧键盘上,`[[=]]`需要5个和弦:( (6认同)

Sag*_*ain 26

所有命令的主人都是

gg=G

这会缩进整个文件!

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

缩进当前行下面的所有行

=G
Run Code Online (Sandbox Code Playgroud)

缩进当前行

==
Run Code Online (Sandbox Code Playgroud)

缩进n当前行下方的行

n==
Run Code Online (Sandbox Code Playgroud)

例如,缩进当前行下面的4行

4==
Run Code Online (Sandbox Code Playgroud)

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

=%
Run Code Online (Sandbox Code Playgroud)


Nag*_*ran 17

您可以使用整洁的应用程序/实用程序来缩进HTML和XML文件,并且它可以很好地缩进这些文件.

整理XML文件

:!tidy -mi -xml %
Run Code Online (Sandbox Code Playgroud)

整理HTML文件

:!tidy -mi -html %
Run Code Online (Sandbox Code Playgroud)


tok*_*khi 15

按下转义然后快速输入以下组合:

gg=G
Run Code Online (Sandbox Code Playgroud)

  • 我慢慢打字,你不会相信接下来发生的事情. (25认同)

Amj*_*ith 11

1G=G.这应该缩进文件中的所有行.1G带你到第一行,=将启动自动缩进,最后G将带你到文件的最后一行.


Eri*_*son 7

在Vim中,使用:insert.这将保留所有格式,而不是自动延迟.有关更多信息help :insert.


Els*_*rko 7

:set paste是你的朋友我使用putty并最终在Windows之间复制代码.在我开启之前:set paste(和:set nopaste)复制/粘贴给了我适合这个原因.


0x8*_*x89 6

如果您不想使用:set paste,请单击中键set nopaste,您也可以粘贴剪贴板的内容:

"*p
"+p
Run Code Online (Sandbox Code Playgroud)

这样您就不必离开正常模式.如果您必须粘贴+*取决于您选择文本的方式,请参阅:help quoteplus.