在Vim中进行Schema-aware的XML编辑

24
在IntelliJ IDEA编辑XML文件时,如果文档引用了模式(schema),IDEA会获取该模式并将其信息用于自动完成。它知道哪些标签在哪些上下文中有效,因此当您按下CTRL-space时,它仅建议那些标签。根据模式,它还会突出显示任何无效的标签。
有没有人知道是否有适用于Vim的类似功能的扩展?

1
有趣,我很想尝试一下。它只在IDEA中用于编辑,还是也可以用于从头开始写作?也就是说,它是否要求整个文档有效;或者只需要到您正在编辑的部分有效;或者它能够使用零散片段?这会影响实现。 - 13ren
3个回答

15

VIM 7+默认支持加载XML定义,而无需任何插件,DTD和SchemaNG都有转换器:

http://vimdoc.sourceforge.net/htmldoc/insert.html#ft-xml-omni

例如,我的Vim 7.3已经具备了XHTML的定义:

$ rpm -ql vim vim-common | grep xml
/usr/share/vim/vim73/autoload/xml
/usr/share/vim/vim73/autoload/xml/html32.vim
/usr/share/vim/vim73/autoload/xml/html401f.vim
/usr/share/vim/vim73/autoload/xml/html401s.vim
/usr/share/vim/vim73/autoload/xml/html401t.vim
/usr/share/vim/vim73/autoload/xml/html40f.vim
/usr/share/vim/vim73/autoload/xml/html40s.vim
/usr/share/vim/vim73/autoload/xml/html40t.vim
/usr/share/vim/vim73/autoload/xml/xhtml10f.vim
/usr/share/vim/vim73/autoload/xml/xhtml10s.vim
/usr/share/vim/vim73/autoload/xml/xhtml10t.vim
/usr/share/vim/vim73/autoload/xml/xhtml11.vim
/usr/share/vim/vim73/autoload/xml/xsd.vim
/usr/share/vim/vim73/autoload/xml/xsl.vim
/usr/share/vim/vim73/autoload/xmlcomplete.vim
/usr/share/vim/vim73/compiler/xmllint.vim
/usr/share/vim/vim73/compiler/xmlwf.vim
/usr/share/vim/vim73/ftplugin/xml.vim
/usr/share/vim/vim73/indent/xml.vim
/usr/share/vim/vim73/syntax/docbkxml.vim
/usr/share/vim/vim73/syntax/xml.vim

试一试,值得的。所有内容都在上面的链接中清楚地记录了,我不会在这里复制粘贴。


嗯,Vim 还能完成什么其他的操作? - khatchad
Vim 7+的开箱即用的XML自动完成功能很好,但我从未能够让vim2dtd脚本实际工作以创建其他类型XML的新定义。该脚本已经近十年没有更新了。我希望能够获得DITA XML的自动完成文件。 - Scribblemacher
请注意,这只能启用自动完成功能,但不能进行模式验证。也就是说,如果您创建的文件不符合您的 XML 模式,您将不会收到错误。 - Dodgyrabbit

6

我见过的最接近Vim的东西是XML Completion脚本。

它包含了DocBook 4.[234]、XSL FO 1.0、XSLT 1.0、Relax NG 1.0、XML Schemas 1.0、SVG 1.1、XHTML 1.1、XInclude 1.0和OpenOffice 1.0 XML格式的XML定义文件。


1

如果您想要实时报告,这将不会有用。 - Soundararajan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接