在Vim中,纠正所有行缩进的命令是什么?
很多时候,我将代码复制并粘贴到远程终端中,然后整个事情都搞砸了。我想一举解决这个问题。
=,缩进命令可以采取行动。因此,gg获取文件的开头,=缩进,G到文件的末尾,gg=G。
=
gg
G
gg=G
在Vim中,使用:insert。这将保留您的所有格式,而不是自动缩进。有关更多信息help :insert。
:insert
help :insert
在粘贴到终端之前,请尝试:set paste,然后在完成后尝试:set nopaste。这将关闭自动缩进、换行和其他扰乱粘贴的功能。
:set paste
:set nopaste
编辑:另外,我应该指出,使用外部程序通常可以获得比=更好的缩进结果。例如,我一直运行:%!perltidy。astyle、cindent等也可以使用。当然,你可以将它们映射到一个击键,并根据文件类型将不同的映射到相同的击键。
:%!perltidy
astyle
cindent
1G=G。这应该缩进文件中的所有行。1G将带您进入第一行,=将启动自动缩进,最后G将带您进入文件中的最后一行。
1G=G
1G
:set paste是你的朋友,我使用油灰并最终在窗口之间复制代码。在我打开:set paste(和:set nopaste)复制/粘贴之前,由于这个原因,我适合。
您可以使用整洁的应用程序/实用程序缩进超文本标记语言和XML文件,它在缩进这些文件时效果很好。
整理XML文件
:!tidy -mi -xml %
整理超文本标记语言文件
:!tidy -mi -html %
如果不想使用:set paste,中键,set nopaste,也可以粘贴剪贴板的内容:
set nopaste
"*p "+p
这样你就不必离开正常模式。 如果您必须粘贴+或*取决于您选择文本的方式,请参阅:help quoteplus。
+
*
:help quoteplus
如果你想重新缩进你所在的块而不必键入任何和弦,你可以这样做:
[[=]]
按转义,然后键入下面的组合快:
对于复杂的C++文件,使用vim的=过滤器命令时,vim并不总是能正确格式化。因此,对于这种情况,最好使用外部C++格式化程序,如astyle(或uncrustify),例如:
:%!astyle
Vim的'='函数默认使用其内部格式化程序(并不总是正确的),但也可以使用外部格式化程序(如astyle)对其进行设置,方法是按照这个问题中的讨论进行适当设置。
vim自动格式化使用特定于您的语言的外部程序来格式化您的源文件,例如Ruby文件的“r的美化”gem,JavaScript的“js的美化”npm包。
对于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或gVim中快速缩进行。
缩进当前行以下的所有行
=G
缩进当前行
==
将n行缩进到当前行下方
n
n==
例如,要在当前行下方缩进4行
4==
要缩进代码块,请转到其中一个大括号并使用命令
=%
对于vi编辑器,使用:插入。这将保留您的所有格式而不是插入自动缩进。完成后按转义以查看实际格式化的文件,否则您会看到一些垃圾字符。像^I 例如:
public static void main(String[] args) { ^I ^I System.out.println("Some Garbage printed upon using :insert"); }
您可以创建一个映射来为您执行此操作。
这将自动缩进整个文件,并将光标保持在您所在的位置:
nmap <leader>ai mzgg=G`z
只需在vim中进入可视模式,并在选择后从上下行中选择,只需按=,所有选定的行都将缩进。