Я знаю, что это пограничный случай, действительно ли он относится к stackoverflow или суперпользователю, но, как кажется, здесь довольно много вопросов по «редактированию кода», я публикую его на SO.
У меня есть куча XML-файлов, которые кто-то в своей бесконечной мудрости решил взорвать на несколько файлов с помощью тегов, что в результате делает их отладку / редактирование огромным P-i-t-A. Поэтому я ищу:
- Способ в VIM открывать их в одном буфере (желательно, чтобы изменения сохранялись в правильных внешних файлах сущностей), ИЛИ;
- Способ расширения файлов в VIM, чтобы внешние объекты читались и заменялись в буфере ИЛИ;
- простой способ сделать это с помощью bash / sed / python в командной строке (или в .vimrc)
Файлы верхнего уровня могут включать новые файлы и т. Д., Кто знает, на скольких уровнях это должно быть рекурсивным ...
Вот пример макета того, как выглядит файл верхнего уровня:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foobar PUBLIC "foobar:dtd" "foobar.dtd" [
<!ENTITY foo SYSTEM "foo.xml">
<!ENTITY bar SYSTEM "bar.xml">
]>
<foo>
<params>
&foo;
</params>
<bar>
&bar;
</bar>
</foo>
EDIT :
Список приведен в порядке предпочтения - если нет вариантов 1. или 2., награда за лучшее # 3 ...
РЕДАКТИРОВАТЬ 2 :
Похоже, ответ @Gaby работает, но, к сожалению, только частично, если я не делаю что-то не так - я напишу какой-то инструмент, используя его ответ, и опубликую его здесь для улучшений. Конечно, решение № 1 или № 2 приветствуется ...:)
РЕДАКТИРОВАТЬ 3 :
Хорошо, лучший не-Emacs -ответ получит награду;)
Заключение :
Благодаря @hcayless у меня теперь есть работающее решение # 2, я добавил:
autocmd BufReadPost,FileReadPost *.xml silent %!xmllint --noent - 2> /dev/null
на мой .vimrc
и все безумно дорого.