整理html文件,如何在VI中整理HTML文件的缩进?

11 个答案:

答案 0 :(得分:165)

有几件事都需要到位。只是在一个地方总结一下:

设置以下选项:

:filetype indent on

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

:set smartindent # abbrev - :set si

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

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

答案 1 :(得分:84)

在filetype indent on内部.vimrc,Vim非常合适地缩进HTML文件。

shiftwidth为2的简单示例:

text

答案 2 :(得分:51)

使用智能缩进的主要问题是,如果XML(或HTML)位于一行,因为它可能最终从卷曲请求返回,那么gg=G将无法解决问题。相反,我刚刚使用直接从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。

希望这可以提供帮助。

答案 3 :(得分:46)

正如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"

有关详细信息,请参阅here和here。

答案 4 :(得分:10)

这是我的解决方案,可以很好地打开“丑陋”的HTML,方式很好:

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

sw命令是因为我的默认值是4,这对于HTML来说太高了。

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

然后使用=重新缩进整个文件

然后unhighlight >(因为我的vimrc中有set hlsearch)

然后删除所有空的/仅空白行(请参阅here以获取更多信息,这也是双重转义的,因为它在shell中)

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

答案 5 :(得分:6)

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

安装

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

运行:call HtmlBeautify()

醇>

这份工作做得很漂亮!

答案 6 :(得分:4)

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

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

接下来,创建一个描述您喜欢的HTML风格的配置文件。文档对Tidy来说不是很好,但这里有一个overview和一个all the options列表。这是我的配置文件:

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

将此tidyrc_html.txt保存在ftplugin文件夹中(在vimfiles下)。

另外一个文件:在html.vim中添加以下行(或创建)ftplugin:

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

要使用它,只需打开一个HTML文件,然后输入/tidy即可。 (/是密钥。)

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

答案 7 :(得分:4)

答案 8 :(得分:2)

您可以通过安装插件tidy自动集成html-beautify和vim-autoformat。

之后,您可以通过一次击键执行安装的任何格式化程序。

答案 9 :(得分:2)

没有一个答案对我有用,因为我所有的HTML都在一行中。

基本上,您首先需要使用以下命令来中断每一行,该命令用相同的字符替换Type "help", "copyright", "credits" or "license" for more information.

>>> from global_toolkit import section

>>> section.Section

>>> from global_toolkit.section import Section

Traceback (most recent call last):

File "", line 1, in

ModuleNotFoundError: No module named 'global_toolkit.section'

>>>,但中间使用换行符。

><

然后输入命令

:%s/>>\r

将缩进文件。

答案 10 :(得分:0)

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

如果vim的自动格式化/缩进gg=G似乎被“破坏”(例如,每行左缩进),则很可能未启用/加载缩进插件。它确实应该提供一条错误消息,而不是仅仅进行糟糕的缩进,否则用户实际上会认为自动格式化/缩进功能相当不错。

要检查缩进插件是否已启用/加载,请运行:scriptnames。查看.../indent/html.vim是否在列表中。如果不是,则表示未加载插件。在这种情况下,请将此行添加到~/.vimrc:

filetype plugin indent on

现在,如果您打开文件并运行:scriptnames,应该会看到.../indent/html.vim。然后运行gg=G,它现在应该执行正确的自动格式化/缩进。 (尽管它不会添加换行符,所以如果所有的html代码都在一行上,则不会缩进。)

注意:如果您正在vim命令行而不是:filetype plugin indent on上运行~/.vimrc,则必须重新打开文件:e。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值