vim autoformat php,vim - 如何在VI中整理HTML文件的缩进?

vim - 如何在VI中整理HTML文件的缩进?

我如何修复他的巨大的html文件的缩进,这些文件都搞砸了?

我尝试了通常的“gg = G”命令,这是我用来修复代码文件缩进的命令。 但是,它似乎不适用于HTML文件。 它只是删除了所有格式。

我也试过设置:filetype = xml,看看是否欺骗它认为这是一个XML文件会有所帮助,但它仍然没有这样做。

10个解决方案

163 votes

有几件事都需要到位。 只是在一个位置总结它们:

设置以下选项:

:filetype indent on

:set filetype=html # abbrev - :set ft=html

:set smartindent # abbrev - :set si

然后将光标移动到文件顶部并缩进到结尾:gg =G

或者选择要缩进的所需文本,然后按=以缩进它。

tylerl answered 2019-06-27T04:03:39Z

84 votes

在我的.vimrc中有shiftwidth,Vim很好地缩进HTML文件。

shiftwidth的简单示例:

text

marcog answered 2019-06-27T04:02:52Z

50 votes

使用智能缩进的主要问题是,如果XML(或HTML)位于一行,因为它可能最终从卷曲请求返回,那么tidy将不会这样做。 相反,我刚刚使用从VI直接调用的整理经历了一个很好的缩进:

:!tidy -mi -xml -wrap 0 %

这基本上告诉VI调用整理来清理一个XML文件而不是包装行以使它们适合默认的68个字符宽的行。 我处理了一个大的29MB XML文件,花了5或6秒钟。 我猜对于HTML文件,命令应该是:

:!tidy -mi -html -wrap 0 %

正如评论中所提到的,tidy是一个基本工具,您可以在许多基础Linux / MacOS系统上找到它。 这是projet的页面,如果您希望拥有它,但不要:HTML Tidy。

希望这可以帮助。

oscaroscar answered 2019-06-27T04:04:24Z

46 votes

正如tylerl上面解释的那样,设置以下内容:

:filetype indent on

:set filetype=html

:set smartindent

然而!

请注意,在vim 7.4中,默认情况下不会缩进html标记html,head,body和其他一些标记。 这是有道理的,因为html文件中的几乎所有内容都属于这些标记。 如果你真的想,你可以让这些标签缩进,如下所示:

:let g:html_indent_inctags = "html,body,head,tbody"

有关更多信息,请参见此处和此处。

Cory Klein answered 2019-06-27T04:05:13Z

10 votes

这是我的解决方案,适用于以一个很好的间隔方式打开“丑陋”的HTML:

vim fileIn.html -c "set sw=2 | %s/>/>\r/ | execute 'normal gg=G' | set nohlsearch | g/^\\s*\$/d"

| wq! fileOut.html命令是因为我的默认值是4,这对于HTML来说太高了。

下一部分在每个元素之后添加一个换行符(Vim认为它是一个回车,叹息)(| wq! fileOut.html)

然后使用| wq! fileOut.html重新缩进整个文件

然后unhighlight | wq! fileOut.html(因为我的vimrc中有set hlsearch)

然后删除所有空的/仅空白行(请参阅此处了解更多,这也是双重转义,因为它在shell中)

如果您根本不想输入Vim,甚至可以添加| wq! fileOut.html,但只需清理文件即可。

adam_0 answered 2019-06-27T04:06:23Z

6 votes

我用这个脚本:[https://github.com/maksimr/vim-jsbeautify]

在上面的链接中,您拥有所有信息:

安装

配置(从第一个示例复制)

运行:call HtmlBeautify()

工作做得很漂亮!

SimonW answered 2019-06-27T04:07:20Z

4 votes

您是否尝试在Vim站点上使用HTML缩进脚本?

[http://www.vim.org/scripts/script.php?script_id=2075]

JaredPar answered 2019-06-27T04:07:55Z

4 votes

这是一个重量级的解决方案,可以让你缩进,加上你在编辑时不一定要关心的所有HTML漂亮打印。

首先,下载Tidy。 确保将二进制文件添加到路径中,以便可以从任何位置调用它。

接下来,创建一个描述您喜欢的HTML风格的配置文件。 文档对Tidy来说不是很好,但是这里有一个概述,以及所有选项的列表。 这是我的配置文件:

bare: yes

break-before-br: no

clean: yes

drop-proprietary-attributes: yes

fix-uri: yes

indent-spaces: 4

indent: yes

logical-emphasis: yes

markup: yes

output-xhtml: yes

quiet: yes

quote-marks: yes

replace-color: yes

tab-size: 4

uppercase-tags: no

vertical-space: yes

word-2000: yes

wrap: 0

将其保存为/tidy在/文件夹中(在vimfiles下)。

还有一个文件:将以下行添加到(或创建)/tidy,也在/中:

map tidy :%! tidy -config ~/vimfiles/ftplugin/tidyrc_html.txt

要使用它,只需打开一个HTML文件,然后键入/tidy。(/是键。)

你去! 无论如何,这不是一个快速的解决方案,但现在你可以更好地编辑那些巨大的,混乱的HTML文件。

Lemur answered 2019-06-27T04:09:07Z

2 votes

您可以通过安装插件vim-autoformat自动集成整洁和html美化。之后,您可以通过单次击键执行安装的任何格式化程序。

Chiel ten Brinke answered 2019-06-27T04:09:34Z

0 votes

我尝试了通常的“gg = G”命令,这是我用来修复代码文件缩进的命令。 但是,它似乎不适用于HTML文件。 它只是删除了所有格式。

如果vim的autoformat / indent gg=G似乎“已损坏”(例如左侧缩进每行),则很可能未启用/加载缩进插件。 它应该真正给出一个错误消息,而不是只是做不好的缩进,否则用户只是认为autoformat / indenting功能是非常糟糕的,当它实际上非常好。

要检查缩进插件是否已启用/加载,请运行autoindent.查看列表中是否包含smartindent。 如果没有,那么这意味着没有加载插件。 在这种情况下,请将此行添加到:e:

filetype plugin indent on

现在,如果您打开文件并运行autoindent,您应该看到smartindent.然后运行:e,它现在应该执行正确的autoformat / indent。 (虽然它不会添加换行符,但如果所有html代码都在一行上,则不会缩进)。

注意:如果您在vim命令行而不是smartindent上运行autoindent,则必须重新打开文件:e。

此外,您无需担心autoindent和smartindent设置,它们与此无关。

wisbucky answered 2019-06-27T04:10:42Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值