。当我运行:scriptnames时,它列出了3个文件:1: usrsharevimvim74filetype.vim,2: usrsharevimvim74ftplugin.vim,3: usrsharevimvim74indent.vim。我没有看到html.vim,应该在那里吗?
终于想通了。设置:filetype plugin indent on后,我不得不用:e重新打开文件。
如Cory的回答所述,当前分发的版本是Vimscript2075。如果您转到该插件页面,则可以看到文档记录了默认情况下会增加缩进量的所有标签。
您在示例中提供的标签均不在此默认列表中,但是有很多标签。
由于HTML的缩进非常容易受到用户的欢迎,因此插件维护者提供了一个选项,可以在增加缩进的标签列表中添加标签或从中删除标签。参见:help html-indent,它表明:
You can add further tags with:
:let g:html_indent_inctags ="html,body,head,tbody"
在每个软件中都有合理的默认值可以说,我认为这是合理的默认值严重失败的一个特殊示例。
我个人认为,或中的任何缩进都是浪费的。每个HTML文档都具有这些结构,并且它们实际上并未添加任何结构。
我同意不应缩进,因为我通常将其与文本内联使用,而不是换行。因此,我认为所给出的特定示例正确缩进了。如果添加div,节或列表,则会缩进,因为这会增加结构。
@Ben感谢您解决此问题。作为vim中HTML开发的新手,我什至不认为某些标签不会缩进。
为什么我不能将它与一起使用,这正是我真正想要的缩进之处? (此修复程序可用于html,head和body标记,但我同意缩进会造成浪费。)
因为在标记内,html缩进脚本试图根据标记内使用的语言进行缩进。例如,它将根据cindent()设置缩进javascript。但是,请参见:help html-indent:您可以使用一些内置选项变量将初始缩进级别应用于或标签。
在版本7.3和7.4之间,位于$VIMRUNTIME/indent中的捆绑的html.vim文件已更改。当前分发的版本实际上是Vimscript#2075,默认情况下它不会缩进一些html标记。
我推荐上面的Ben解决方案,但也可以还原到分布式html.vim文件的早期版本。
为此,只需将现有的7.4 html.vim文件替换为7.3中的文件。
wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
tar jxf vim-7.3.tar.bz2
cp vim73/runtime/indent/html.vim ~/.vim/indent/
"但是我每天都会选择"运行"而不是"高效"。我完全同意。感谢您不像我这样懒。
该脚本的维护者实际上确实在乎并要求投诉(请参见此处:vim-dev list),因此,本着开源的精神,您应该直接告诉他,以便他可以改善缩进脚本
这样,脚本就可以了。它只是缺少帮助中关于将添加到缩进的默认标签是什么的文档。正如我在回答中提到的,给定示例中的标记不是默认会添加到缩进中的NOT标记。只需配置它以缩进所需的特定标签,一切便可以正常使用,可能比7.3版本更好。有理由在7.4中选择此脚本来代替旧版本!
如果执行此操作(将新版本的插件替换为未维护的旧版本),则将永远不会再得到任何错误修正或改进。需要任何HTML5支持吗?太糟糕了。希望您的错误报告得到处理?太糟糕了。如何配置新插件,或通过特定请求联系维护者呢?
@ChristianBrabandt我想也许我会建议他更新vim.org上的文档,以明确表明默认情况下某些基本html标记未缩进。这样可以防止我错误地认为它已损坏。我认为当前位于页面中途的文本:let g:html_indent_inctags ="html,body,head,tbody"不够交流。
截至7.4.52
在vim内:
:let g:html_indent_inctags ="html,body,head,tbody"
:call HtmlIndent_CheckUserSettings()
.vimrc中的其他内容:
let g:html_indent_inctags ="html,body,head,tbody"
我只想将其添加到对最佳答案的评论中,以便在花了太多时间使答案无法解决但显然没有足够的声誉后给予回馈:(
在vim 7.4.1689上E117: Unknown function: HtmlIndent_CheckUserSettings
故障排除的第一步是运行:scriptnames。如果您没有看到.../indent/html.vim,则表明该插件未正确加载,并且缩进无法正常工作。它可能只会使每行缩进。 (问题是vim不会给出错误,因此缩进似乎做得很糟糕。)
使它工作的最可靠方法是将此行放入您的~/.vimrc中。
filetype plugin indent on
然后再次使用vim打开文件,并运行:scriptnames。您现在应该看到.../indent/html.vim。然后键入gg=G以自动格式化整个文件。
一个让我绊了一段时间的重要注意事项:如果您没有将其放在~/.vimrc中,而是在打开文件后仅键入:filetype plugin indent on,则必须使用:e重新打开文件。 。打开文件之前,必须先加载缩进插件。运行:scriptnames进行确认。
旁注:您无需担心smartindent或autoindent设置,这些设置用于其他用途。
Copyright © 码农家园