0

我下面只有这个配置。当我取消注释最后一行时,我没有得到正确的缩进:当我缩进时,这些行被放在第一列。

syntax on

autocmd FileType html setlocal shiftwidth=2 tabstop=2

"au BufRead,BufNewFile *.html set filetype=htmljinja

我需要 htmljinja 文件类型,因为我的 html 有 twig 代码(twig 的语法类似于 htmljinja)

我有 vim 7.3.547

4

1 回答 1

0

与此同时,我规避了 vim 的缩进功能,而是尽可能地依赖特定的缩进器/重新格式化程序(顺便说一下,如果有人知道tex/latex重新格式化程序,请告诉我)。

结果,以下几行进入了我的.vimrc

au FileType c,cpp let &l:equalprg="indent -br -l62 -nce -blf -bbb -i4 -nbfde -nbfda -bad -bap -cli4 -nut"
au FileType perl let &l:equalprg="perltidy"
noremap <leader>i mzgg=G`z

这种方法的一个缺点是您无法在编写时享受自动缩进。尽管如此,我很快就习惯了它,我认为它是解决缩进问题的一个非常可靠和合适的解决方案。此外,缩进的代码看起来很棒,我怀疑那些花哨的 IDE 跟不上它。

现在,这与您的问题有什么关系?

按照我的方法,我搜索了一个 html-reformatter 并找到了tidy. tidy似乎是一个怪物,它不仅可以漂亮地打印您的 html 文件,还可以验证和纠正它们。

为了应付tidy你必须为你的缩进目的编写一个配置文件。以下对我有用:

~/.tidyrc_indent

indent: auto
indent-spaces: 3
show-warnings: no
show-errors: 0
quiet: yes
indent-cdata: yes
output-html: yes
wrap: 80

但请务必阅读手册页,tidy因为选项似乎无穷无尽。

现在您可以添加

au FileType htmljinja let &equalprg="tidy -config ~/.tidyrc"

到您的.vimrc并开始使用gg=G需要较少击键的派生映射来缩进您的 html 文件。

请小心,因为tidy任何其他重新格式化程序可能会弄乱您的代码。因此,您应该定期备份您的代码(可能使用git或类似的东西)。尽管我自己从未经历过这种情况,perltidy并且indent互联网上有一些愤怒的用户抱怨此类事件的报道。

于 2013-08-01T20:58:00.837 回答