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