在Vim中,纠正所有行缩进的命令是什么?
通常情况下,我将代码复制并粘贴到远程终端,然后把整个事情搞砸了。我想一下子解决这个问题。
在Vim中,纠正所有行缩进的命令是什么?
通常情况下,我将代码复制并粘贴到远程终端,然后把整个事情搞砸了。我想一下子解决这个问题。
当前回答
所有命令的主人是
gg=G
这将缩进整个文件!
下面是一些简单而优雅的命令,用于在Vim或gVim中快速缩进行。
缩进当前行以下的所有行
=G
缩进当前行
==
将当前行下缩进n行
n==
例如,将当前行缩进4行
4==
若要缩进代码块,请转到其中一个花括号并使用命令
=%
其他回答
对于复杂的c++文件,当使用vim的= filter命令时,vim并不总是能得到正确的格式。因此,对于这种情况,最好使用外部c++格式化程序,如style(或uncrustify),例如:
:%!astyle
Vim的'='函数默认使用内部格式化器(这并不总是正确的),但也可以使用外部格式化器设置它,如style,通过在这个问题中讨论的适当设置。
所有命令的主人是
gg=G
这将缩进整个文件!
下面是一些简单而优雅的命令,用于在Vim或gVim中快速缩进行。
缩进当前行以下的所有行
=G
缩进当前行
==
将当前行下缩进n行
n==
例如,将当前行缩进4行
4==
若要缩进代码块,请转到其中一个花括号并使用命令
=%
对于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)
在粘贴到终端之前,尝试:set paste,然后在完成后:set nopaste。这将关闭自动缩进,换行和其他功能,使您的粘贴一团糟。
编辑:另外,我应该指出,使用外部程序通常可以获得比=缩进更好的结果。例如,我运行:%!一直都很整洁。也可以用style, cindent等。当然,你可以将这些映射到一个击键,并根据文件类型将不同的映射到相同的击键。
vim-autoformat使用特定于你的语言的外部程序格式化你的源文件,例如Ruby文件的"rbeautify" gem, JavaScript文件的"js-beautify" npm包。