在 IntelliJ IDEA 中编辑 XML 文件时,如果文档引用了架构,IDEA 将获取架构并使用该信息进行自动完成。它知道哪些标签在哪些上下文中有效,因此当您点击 CTRL-空格时,它只会建议那些标签。它还突出显示根据架构无效的任何标签。
有人知道提供类似功能的 Vim 扩展吗?
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 的是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 定义文件。
参考:http ://ricardianambivalence.com/2013/02/17/xml-validation-in-vim/
通过bar.xml
打开,您可以轻松地针对foo.xsd
. 首先,保存您的更改,然后点击:
并输入以下内容(它是终端命令的管道)。
:! xmllint --noout --schema foo.xsd bar.xml