Обход XSD в VIM

Я использую VIM в качестве своего текстового редактора, и я редактирую много файлов WSDL и XML.

Файлы WSDL имеют раздел XSD. Действительно ли там некоторый VIM является плагином, который я могу использовать для пересечения типов XSD? т.е. если у меня есть следующая строка, и каре - то, где '|' знак:

<xsd:element minOccurs="0" name="FooName" type="Magic|FooType"/>

и я нажимаю Ctrl+Alt+Foo (или некоторая другая волшебная комбинация), это получит меня к определению MagicFooType, т.е.:

<xsd:complexType name="MagicFooType">

Я не мог найти, как использовать ctags для этого и всех других плагинов, которые я мог найти, для императивных языков (т.е. Java). Там некоторый плагин/сценарий должен сделать задание?

6
задан maayank 14 June 2010 в 16:00
поделиться

2 ответа

Я немного наблюдал за этой темой и сам задавался этим вопросом, поскольку я пользователь VIM и работаю с большим количеством очень больших XML файлов и связанных с ними XSD, XSLT и XQuery файлов, и все они могли бы выиграть от такого рода вещей, как я уверен, вы можете себе представить.

После некоторых исследований это можно сделать с помощью ctags, но на данный момент нет ничего, что могло бы создать файл ctags для этого. По сути, ctag выглядит следующим образом:

{tagname}<tab>{tagfile}<tab>{tagaddress}

Поскольку tagaddress - это команда режима ex, она может привести вас в любое место конкретного файла, чтобы вы попали прямо на определение.

По сути, все, что нам нужно сделать, это создать сценарий, который будет работать с WSDL (или XSD, или чем угодно) и, зная местоположение тега и файла, создавать соответствующие строки в файле ctags для отображения всех определений. Звучит как забавный и полезный небольшой проект.

Извините, что это не совсем полный ответ, но это возможно сделать с помощью ctags и даст вам надежность, которую вы ищете.

2
ответ дан 17 December 2019 в 00:03
поделиться

gd ("go to declaration") не знает о формате XML, но в данном случае может подойти, если предположить, что раздел XSD находится в верхней части WSDL.

2
ответ дан 17 December 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: