如何在 Vi 中修复整个文件的缩进?

发布于 2024-07-13 00:58:26 字数 85 浏览 10 评论 0原文

在Vim中,纠正所有行缩进的命令是什么?

很多时候,我会将代码复制并粘贴到远程终端中,然后把整个事情弄乱。 我想一下子解决这个问题。

In Vim, what is the command to correct the indentation of all the lines?

Often times I'll copy and paste code into a remote terminal and have the whole thing messed up. I want to fix this in one fell swoop.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(16

胡大本事 2024-07-20 00:58:27

如果你不想使用:set Paste,中键单击,set nopaste,你也可以粘贴剪贴板的内容:

"*p
"+p

这样你就不必离开正常模式。
如果您必须粘贴 +* 取决于您选择文本的方式,请参阅 :help quoteplus

if you do not want to use :set paste, middle-click, set nopaste, you can also paste the content of the clipboard:

"*p
"+p

That way you don't have to leave normal mode.
if you have to paste + or * depends on how you selected the text, see :help quoteplus.

请持续率性 2024-07-20 00:58:27

:set Paste 是你的朋友,我使用 putty,最终在窗口之间复制代码。 在我开始使用 :set Paste (和 :set nopaste)之前,复制/粘贴就因为这个原因而让我很舒服。

:set paste is your friend I use putty and end up copying code between windows. Before I was turned on to :set paste (and :set nopaste) copy/paste gave me fits for that very reason.

梦过后 2024-07-20 00:58:27

在 Vim 中,使用 :insert。 这将保留所有格式并且不进行自动缩进。 有关更多信息帮助:插入

In Vim, use :insert. This will keep all your formatting and not do autoindenting. For more information help :insert.

短叹 2024-07-20 00:58:27

对于复杂的 C++ 文件,使用 vim 的 = 过滤命令时,vim 并不总是能获得正确的格式。 因此,对于这种情况,最好使用外部 C++ 格式化程序,例如 astyle (或 uncrustify) 例如:

:%!astyle

Vim 的 '=' 函数默认使用其内部格式化程序(这并不总是正确的),但可以还可以通过按照这个问题。

For complex C++ files vim does not always get the formatting right when using vim's = filter command. So for a such situations it is better to use an external C++ formatter like astyle (or uncrustify) e.g.:

:%!astyle

Vim's '=' function uses its internal formatter by default (which doesn't always gets things right) but one can also set it use an external formatter, like astyle, by setting it up appropriately as discussed in this question.

猫弦 2024-07-20 00:58:27

您可以创建一个映射来为您执行此操作。

这将自动缩进整个文件,并且仍然将光标保持在您所在的位置:

nmap <leader>ai mzgg=G`z

You can create a mapping to do this for you.

This one will auto indent the whole file and still keep your cursor in the position you are:

nmap <leader>ai mzgg=G`z
动次打次papapa 2024-07-20 00:58:27

只需在 vim 中进入可视模式,然后从上到下选择行,选择后按 = ,所有选定的行都会缩进。

Just go to visual mode in vim , and select from up to down lines after selecting just press = , All the selected line will be indented.

゛时过境迁 2024-07-20 00:58:27

vim-autoformat 使用特定于您的语言的外部程序(例如“rbeautify”)格式化您的源文件gem 用于 Ruby 文件,“js-beautify”npm 包用于 JavaScript。

vim-autoformat formats your source files using external programs specific for your language, e.g. the "rbeautify" gem for Ruby files, "js-beautify" npm package for JavaScript.

圈圈圆圆圈圈 2024-07-20 00:58:27

对于 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 )

For XML files, I use this command

:1,$!xmllint --format --recover - 2>/dev/null

You need to have xmllint installed (package libxml2-utils)

(Source : http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html )

眼眸里的那抹悲凉 2024-07-20 00:58:27

对于 vi 编辑器,请使用 :insert。 这将保留所有格式,并且不会插入自动缩进。完成后,按转义键查看实际的格式化文件,否则您会看到一些垃圾字符。 就像^我
例如:

public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert"); 
}

For vi Editor, use :insert. This will keep all your formatting and not insert auto-indenting.Once done press escape to view the actual formatted file otherwise you'l see some garbage characters. like ^I
e.g:

public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert"); 
}
羁绊已千年 2024-07-20 00:58:26

=,缩进命令可以进行动作。 因此,gg 获取文件开头,= 缩进,G 到文件末尾,gg=G

=, the indent command can take motions. So, gg to get the start of the file, = to indent, G to the end of the file, gg=G.

天生の放荡 2024-07-20 00:58:26

在粘贴到终端之前,请尝试 :set Paste ,然后在完成后尝试 :set nopaste 。 这将关闭自动缩进、换行和其他弄乱粘贴的功能。

编辑:另外,我应该指出,使用外部程序通常可以获得比 = 缩进更好的结果。 例如,我一直运行 :%!perltidy 。 也可以使用astylecindent等。 当然,您可以将它们映射到击键,并根据文件类型将不同的击键映射到相同的击键。

Before pasting into the terminal, try :set paste and then :set nopaste after you're done. This will turn off the auto-indent, line-wrap and other features that are messing up your paste.

edit: Also, I should point out that a much better result than = indenting can usually be obtained by using an external program. For example, I run :%!perltidy all the time. astyle, cindent, etc. can also be used. And, of course, you can map those to a key stroke, and map different ones to the same keystroke depending on file type.

一生独一 2024-07-20 00:58:26

所有命令的主控是

gg=G

这会缩进整个文件!

下面是一些用于在 Vim 或 gVim 中快速缩进的简单而优雅的命令。

缩进当前行下方的所有行

=G

缩进当前行 缩进

==

当前行下方的 n 行

n==

例如,要缩进当前行下方的 4 行

4==

要缩进代码块,请转至大括号之一并使用命令

=%

The master of all commands is

gg=G

This indents the entire file!

And below are some of the simple and elegant commands used to indent lines quickly in Vim or gVim.

To indent the all the lines below the current line

=G

To indent the current line

==

To indent n lines below the current line

n==

For example, to indent 4 lines below the current line

4==

To indent a block of code, go to one of the braces and use command

=%
难以启齿的温柔 2024-07-20 00:58:26

如果您想重新缩进您所在的块而无需输入任何和弦,您可以执行以下操作:

[[=]]

If you want to reindent the block you're in without having to type any chords, you can do:

[[=]]
葬心 2024-07-20 00:58:26

按 Esc 键,然后快速输入以下组合:

gg=G

press escape and then type below combinations fast:

gg=G
唠甜嗑 2024-07-20 00:58:26

您可以使用 tidy 应用程序/实用程序来缩进 HTML 和 HTML。 XML 文件,它在缩进这些文件方面效果很好。

美化 XML 文件

:!tidy -mi -xml %

美化 HTML 文件

:!tidy -mi -html %

You can use tidy application/utility to indent HTML & XML files and it works pretty well in indenting those files.

Prettify an XML file

:!tidy -mi -xml %

Prettify an HTML file

:!tidy -mi -html %
挥剑断情 2024-07-20 00:58:26

1G=G。 这应该缩进文件中的所有行。 1G 将带您进入第一行,= 将开始自动缩进,最后的 G 将带您进入文件中的最后一行。

1G=G. That should indent all the lines in the file. 1G takes you the first line, = will start the auto-indent and the final G will take you the last line in the file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文