在Vim中,纠正所有行缩进的命令是什么?
很多时候我会将代码复制并粘贴到远程终端中并使整个过程搞砸了 . 我想一举解决这个问题 .
如果你想重新加入你所在的块而不必键入任何和弦,你可以这样做:
[[=]]
= ,缩进命令可以采取动作 . 所以, gg 获取文件的开头, = 缩进, G 到文件的末尾, gg=G .
=
gg
G
gg=G
在粘贴到终端之前,请尝试 :set paste (完成后再使用 :set nopaste ) . 这将关闭搞乱粘贴的自动缩进,换行等功能 .
:set paste
:set nopaste
编辑:另外,我应该指出,通常可以通过使用外部程序获得比=缩进更好的结果 . 例如,我一直运行 :%!perltidy . 也可以使用astyle,cindent等 . 当然,您可以将它们映射到键击 - 并根据文件类型将不同的键映射到相同的击键
:%!perltidy
所有命令的主人都是
这会缩进整个文件!
下面是一些简单而优雅的命令,用于在Vim或gVim中快速缩进行 .
缩进当前行下面的所有行
=G
缩进当前行
==
缩进当前行下方的 n 行
n
n==
例如,缩进当前行下面的4行
4==
要缩进代码块,请转到其中一个大括号并使用命令
=%
您可以使用整洁的应用程序/实用程序来缩进HTML和XML文件,并且它可以很好地缩进这些文件 .
整理XML文件
:!tidy -mi -xml %
整理HTML文件
:!tidy -mi -html %
按下转义然后快速输入以下组合:
1G=G . 这应该缩进文件中的所有行 . 1G 带你到第一行, = 将启动自动缩进,最后 G 将带你到文件的最后一行 .
1G=G
1G
在Vim中,使用 :insert . 这将保留所有格式,而不是自动延迟 . 有关更多信息 help :insert .
:insert
help :insert
:set paste 是你的朋友我使用putty并最终在windows之间复制代码 . 在我开启 :set paste (和 :set nopaste )之前,复制/粘贴给了我适合这个原因 .
如果你不想使用 :set paste ,中键点击, set nopaste ,你也可以粘贴剪贴板的内容:
set nopaste
"*p "+p
这样您就不必离开正常模式 . 如果必须粘贴 + 或 * 取决于您选择文本的方式,请参阅 :help quoteplus .
+
*
:help quoteplus
vim-autoformat使用特定于您的语言的外部程序格式化您的源文件,例如rbeautify " gem for Ruby files, " js-beautify“用于JavaScript的npm包 .
对于复杂的C文件,使用vim的 = 过滤器命令时,vim并不总能正确获得格式 . 因此,对于这种情况,最好使用像astyle(或uncrustify)这样的外部C格式化程序,例如:
:%!astyle
Vim 's ' = ' function uses its internal formatter by default (which doesn' t总能让事情变得正确)但是也可以设置它使用外部格式化程序,如astyle,通过this question中讨论的适当设置 .
vi应该尊重制表符和空格,但是你应该考虑vi可能使用不同于其他编辑器的长度选项卡 . 你能比“整件事搞砸了”更具体吗?
对于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)
对于vi编辑器,请使用:insert . 这将保留所有格式,而不是插入自动缩进 . 完成后按下转义查看实际格式化的文件,否则你会看到一些垃圾字符 . 喜欢^ 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中进入可视模式,然后在选择按下=后选择从上到下的行,所有选定的行都将缩进 .
17 回答
如果你想重新加入你所在的块而不必键入任何和弦,你可以这样做:
=
,缩进命令可以采取动作 . 所以,gg
获取文件的开头,=
缩进,G
到文件的末尾,gg=G
.在粘贴到终端之前,请尝试
:set paste
(完成后再使用:set nopaste
) . 这将关闭搞乱粘贴的自动缩进,换行等功能 .编辑:另外,我应该指出,通常可以通过使用外部程序获得比=缩进更好的结果 . 例如,我一直运行
:%!perltidy
. 也可以使用astyle,cindent等 . 当然,您可以将它们映射到键击 - 并根据文件类型将不同的键映射到相同的击键所有命令的主人都是
gg=G
这会缩进整个文件!
下面是一些简单而优雅的命令,用于在Vim或gVim中快速缩进行 .
缩进当前行下面的所有行
缩进当前行
缩进当前行下方的
n
行例如,缩进当前行下面的4行
要缩进代码块,请转到其中一个大括号并使用命令
您可以使用整洁的应用程序/实用程序来缩进HTML和XML文件,并且它可以很好地缩进这些文件 .
整理XML文件
整理HTML文件
按下转义然后快速输入以下组合:
1G=G
. 这应该缩进文件中的所有行 .1G
带你到第一行,=
将启动自动缩进,最后G
将带你到文件的最后一行 .在Vim中,使用
:insert
. 这将保留所有格式,而不是自动延迟 . 有关更多信息help :insert
.:set paste
是你的朋友我使用putty并最终在windows之间复制代码 . 在我开启:set paste
(和:set nopaste
)之前,复制/粘贴给了我适合这个原因 .如果你不想使用
:set paste
,中键点击,set nopaste
,你也可以粘贴剪贴板的内容:这样您就不必离开正常模式 . 如果必须粘贴
+
或*
取决于您选择文本的方式,请参阅:help quoteplus
.vim-autoformat使用特定于您的语言的外部程序格式化您的源文件,例如rbeautify " gem for Ruby files, " js-beautify“用于JavaScript的npm包 .
对于复杂的C文件,使用vim的
=
过滤器命令时,vim并不总能正确获得格式 . 因此,对于这种情况,最好使用像astyle(或uncrustify)这样的外部C格式化程序,例如:Vim 's ' = ' function uses its internal formatter by default (which doesn' t总能让事情变得正确)但是也可以设置它使用外部格式化程序,如astyle,通过this question中讨论的适当设置 .
vi应该尊重制表符和空格,但是你应该考虑vi可能使用不同于其他编辑器的长度选项卡 . 你能比“整件事搞砸了”更具体吗?
对于XML文件,我使用此命令
你需要安装xmllint(包libxml2-utils)
(来源:http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html)
对于vi编辑器,请使用:insert . 这将保留所有格式,而不是插入自动缩进 . 完成后按下转义查看实际格式化的文件,否则你会看到一些垃圾字符 . 喜欢^ I例如:
您可以创建映射来为您执行此操作 .
这个将自动缩进整个文件并仍然将光标保持在您所在的位置:
只需在vim中进入可视模式,然后在选择按下=后选择从上到下的行,所有选定的行都将缩进 .