在Vim中,纠正所有行缩进的命令是什么?
我经常会将代码复制并粘贴到远程终端中,并将整个事情搞砸了。我想一举解决这个问题。
答案 0 :(得分:1144)
=
,缩进命令可以采取动作。因此,gg
要获取文件的开头,=
要缩进,G
到文件的末尾,gg=G
。
答案 1 :(得分:119)
在粘贴到终端之前,请尝试:set paste
(然后在完成后再:set nopaste
)。这将关闭搞乱粘贴的自动缩进,换行等功能。
编辑:另外,我应该指出,通常可以通过使用外部程序获得比=缩进更好的结果。例如,我一直运行:%!perltidy
。也可以使用astyle,cindent等。当然,您可以将它们映射到按键 - 并根据文件类型将不同的按键映射到相同的按键
答案 2 :(得分:29)
如果您想重新录制您所在的块而无需键入任何和弦,您可以这样做:
[[=]]
答案 3 :(得分:24)
所有命令的主人都是
gg=G
这会缩进整个文件!
以下是一些用于在Vim或gVim中快速缩进行的简单而优雅的命令。
缩进当前行下方的所有行
=G
缩进当前行
==
缩进当前行下面的n
行
n==
例如,缩进当前行下面的4行
4==
要缩进代码块,请转到其中一个大括号并使用命令
=%
答案 4 :(得分:17)
您可以使用整洁的应用程序/实用程序缩进HTML& XML文件,它在缩进这些文件时效果很好。
整理XML文件
:!tidy -mi -xml %
整理HTML文件
:!tidy -mi -html %
答案 5 :(得分:14)
按下转义然后快速输入以下组合:
gg=G
答案 6 :(得分:11)
1G=G
。这应该缩进文件中的所有行。 1G
将第一行显示,=
将启动自动缩进,最后G
会将您带到文件的最后一行。
答案 7 :(得分:7)
在Vim中,使用:insert
。这将保留所有格式,而不是自动延迟。有关详细信息help :insert
。
答案 8 :(得分:7)
:set paste
是你的朋友我使用putty并最终在windows之间复制代码。在我开启:set paste
(和:set nopaste
)之前,复制/粘贴让我适合这个原因。
答案 9 :(得分:6)
如果您不想使用:set paste
,请单击鼠标中键,set nopaste
,您也可以粘贴剪贴板的内容:
"*p
"+p
这样你就不必离开正常模式了。
如果您必须粘贴+
或*
取决于您选择文字的方式,请参阅:help quoteplus
。
答案 10 :(得分:4)
vim-autoformat使用特定于您的语言的外部程序格式化您的源文件,例如rbeautify" Ruby文件的宝石," js-beautify"用于JavaScript的npm包。
答案 11 :(得分:3)
对于复杂的C ++文件,使用vim的=
过滤器命令时,vim并不总能正确获得格式。因此,对于这种情况,最好使用外部C ++格式化程序,如astyle(或uncrustify),例如:
:%!astyle
Vim的'='函数默认使用它的内部格式化程序(并不总是把事情搞定),但也可以设置它使用外部格式化程序,如astyle,通过{{3}中讨论的适当设置}。
答案 12 :(得分:2)
vi应该尊重标签和空格,但是你应该考虑vi可能使用不同于其他编辑器的长度标签。你能比“整件事搞砸了”更具体吗?
答案 13 :(得分:2)
对于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)
答案 14 :(得分:1)
您可以创建一个映射来为您执行此操作。
这个会自动缩进整个文件并仍然将光标保持在您所在的位置:
nmap <leader>ai mzgg=G`z
答案 15 :(得分:0)
对于vi编辑器,请使用:insert。这将保留所有格式,而不是插入自动缩进。完成后按下转义查看实际格式化的文件,否则你会看到一些垃圾字符。喜欢^我 e.g:
{{1}}
答案 16 :(得分:0)
只需在vim中进入可视模式,然后只需按=即可从上向下的行中进行选择,所有选定的行都将缩进。