Answers:
随着filetype indent on
里面我的.vimrc
,Vim的缩进HTML文件相当不错。
带有shiftwidth
2的简单示例
<html>
<body>
<p>
text
</p>
</body>
</html>
有几件事都需要准备就绪。只是将它们汇总在一个位置:
设置以下选项:
:filetype indent on
:set filetype=html # abbrev - :set ft=html
:set smartindent # abbrev - :set si
然后将光标移到文件的顶部并缩进到末尾:gg
=G
或选择要缩进的文本,然后单击=以缩进。
home.html
。我对缩进.php文件没有任何问题。在这里,您有我的.vimrc:pastebin.com/FAJ0MCA9
smartindent
没必要 同样针对C和C ++进行了调整,我更喜欢使用更通用的名称autoindent
。
使用智能缩进的主要问题是,如果XML(或HTML)位于一行上,因为它可能最终从curl请求返回,那么gg=G
就不会成功。取而代之的是,我刚刚使用VI直接调用的tidy进行了良好的缩进:
:!tidy -mi -xml -wrap 0 %
基本上,这告诉VI调用tidy来清理XML文件,而不是将行换行以使其适合默认68个字符的行。我处理了一个29MB的大型XML文件,花了5到6秒钟。我猜对于一个HTML文件,命令应该是:
:!tidy -mi -html -wrap 0 %
如评论中所述,它tidy
是一个基本工具,可以在许多基本的Linux / MacOS系统上找到。如果您希望拥有但没有,则这是projet的页面:HTML Tidy。
如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"
请参见“ HTML缩进在编译的Vim 7.4中不起作用,有什么想法吗? ”和“ 替代的html缩进脚本” ”。
这是我的解决方案,用于以良好的间距打开“难看的” HTML很好:
vim fileIn.html -c "set sw=2 | %s/>/>\r/ | execute 'normal gg=G' | set nohlsearch | g/^\\s*\$/d"
sw
命令是因为我的默认值为4,对于HTML来说太高了。>
)之后添加换行符(Vim认为这是回车)。=
。>
(因为我已经set hlsearch
进入vimrc)。| wq! fileOut.html
如果根本不想输入Vim,甚至可以添加到末尾,而只需清理文件即可。
:%s/>\s*/>\r/g
(添加了一个g
用于全局替换,并\s*
去除尾随空白)。我还添加:%s/</\r</g
了在左方括号之前添加换行符的功能。否则,像<td>foo</td>
这样的标签将像<td>
和一样拆分foo</td>
。
我使用以下脚本:https : //github.com/maksimr/vim-jsbeautify
在上面的链接中,您具有所有信息:
:call HtmlBeautify()
做得好漂亮!
这是一个重量级的解决方案,可让您缩进,加上在编辑时不必关心的所有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
保存为tidyrc_html.txt
你ftplugin
文件夹(在vimfiles)。
还有一个文件:添加以下行(或创建)html.vim
,也是在ftplugin
:
map <leader>tidy :%! tidy -config ~/vimfiles/ftplugin/tidyrc_html.txt <CR>
要使用它,只需打开一个HTML文件,然后键入/tidy
。(那/
是<leader>
关键。)
你去!无论如何,这都不是一个快速的解决方案,但是现在您可以更好地编辑那些庞大且混乱的HTML文件。
您可以通过安装插件vim-autoformat自动集成tidy和html-beautify。之后,您只需单击一次即可执行安装的任何格式化程序。
我尝试了通常的“ gg = G”命令,该命令用于修复代码文件的缩进。但是,它似乎不适用于HTML文件。它只是删除了所有格式。
如果vim的自动格式化/缩进 gg=G
似乎“中断”(例如,左缩进每一行),则很可能未启用/加载缩进插件。它确实应该给出错误消息,而不是仅仅进行不好的缩进,否则用户实际上会认为自动格式化/缩进功能非常好,而实际上它还不错。
要检查缩进插件是否已启用/加载,请运行:scriptnames
。查看是否.../indent/html.vim
在列表中。如果不是,则表示未加载插件。在这种情况下,请将此行添加到~/.vimrc
:
filetype plugin indent on
现在,如果您打开文件并运行:scriptnames
,应该会看到.../indent/html.vim
。然后运行gg=G
,现在应该执行正确的自动格式化/缩进。(尽管它不会添加换行符,所以如果所有的html代码都在一行中,则不会缩进)。
注意:如果您使用:filetype plugin indent on
的不是vim命令行~/.vimrc
,则必须重新打开该文件:e
。
另外,您无需担心autoindent
和smartindent
设置,它们与此无关。