在Vim中,什么命令可以更正所有行的缩进?
通常,我会复制代码并将其粘贴到远程终端中,并使整个过程变得混乱。我想一口气解决这个问题。
在Vim中,什么命令可以更正所有行的缩进?
通常,我会复制代码并将其粘贴到远程终端中,并使整个过程变得混乱。我想一口气解决这个问题。
Answers:
=
,indent命令可以动作。因此,gg
要获取文件的开头,=
缩进G
到文件的末尾,gg=G
。
''
两个单引号)将您带回原处,因此gg=G''
应缩进然后返回。
在粘贴到终端之前,请先尝试:set paste
然后:set nopaste
完成。这将关闭自动缩进,换行和其他使您的粘贴混乱的功能。
编辑:另外,我应该指出,=
通常可以通过使用外部程序来获得比缩进更好的结果。例如,我:%!perltidy
一直在跑步。astyle
,cindent
等。而且,当然,您可以将它们映射到按键,并根据文件类型将不同的按键映射到相同的按键。
equalprg
在ftplugin中设置选项,以使用外部过滤器进行=
缩进,而不是使用自定义键绑定。
formatpgm
整洁和astyle然后gq
。以下是我的一些示例.vimrc
:au FileType xml set fp=tidy\ -q\ -i\ -xml
和au FileType java set fp=/usr/local/bin/astyle\ --mode=java\ --indent=tab
所有命令的主人是
gg=G
这会使整个文件缩进!
下面是一些简单而优雅的命令,用于在Vim或gVim中快速缩进行。
缩进当前行下的所有行
=G
缩进当前行
==
缩进n
当前行下方的行
n==
例如,缩进当前行下方的4行
4==
要缩进一段代码,请转到其中一个大括号并使用命令
=%
1G=G
。那应该缩进文件中的所有行。1G
将带您进入第一行,=
将开始自动缩进,最后G
将带您进入文件的最后一行。
1gg=G
:set paste
是您的朋友,我使用腻子并最终在Windows之间复制代码。出于这个原因,在我打开:set paste
(和:set nopaste
)复制/粘贴之前,适合我。
在Vim中,使用:insert
。这将保留所有格式,并且不会自动缩进。有关更多信息help :insert
。
vim-autoformat使用特定于您的语言的外部程序来格式化源文件,例如Ruby文件的“ rbeautify” gem,JavaScript的“ js-beautify” npm软件包。
对于复杂的C ++文件,使用vim的=
filter命令时,vim并非总是能正确设置格式。因此,在这种情况下,最好使用外部C ++格式化程序,例如astyle(或uncrustify),例如:
:%!astyle
Vim的'='函数默认使用其内部格式化程序(这并不总是使事情正确),但也可以通过设置外部格式化程序(如astyle)来设置它,方法是如本问题所述进行适当设置。
对于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)
只需在vim中进入可视模式,并在选择后仅需按=即可从上向下的行中进行选择,所有选定的行都将缩进。
ggvG=
什么时候可以gg=G
。使运动可见的意义何在?这适用于所有采取行动的动作。