当我从另一个文件复制代码时,格式是混乱的,就像这样:

fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}

如何在vim中自动格式化这段代码?


当前回答

试试下面的按键:

gg=G

解释:gg到文件的顶部,=是修复缩进的命令,G告诉它执行到文件末尾的操作。

其他回答

插件vim-autoformat允许您使用一个命令(https://github.com/vim-autoformat/vim-autoformat)格式化缓冲区(或缓冲区选择)。为此,它使用了外部格式程序,并使用了vim的缩进功能。

试试下面的按键:

gg=G

解释:gg到文件的顶部,=是修复缩进的命令,G告诉它执行到文件末尾的操作。

@Gavin-Freeborn在YouTube上有一个很棒的视频,可以看到这里提到的许多选项的概览和演示:

https://www.youtube.com/watch?v=tM_uIwSucPU

它涵盖了一些Vim插件以及内置功能,如=、gq和formatprg。

如上所述,我喜欢缩进,但大多数情况下,我只想格式化我正在处理的文件的一小部分。由于indent可以从stdin中获取代码,它真的很简单:

选择要用V或类似的格式格式化的代码块。 通过输入:!indent格式化。

style也接受stdin,所以你可以在这里使用相同的技巧。

我想补充的是,为了防止它在第一时间被搞砸,你可以在粘贴之前键入:set paste。粘贴完成后,你可以输入:set nopaste来进行js-beautify和缩进等操作。