Файл XML отступа Vim


Я изучаю Vim, но я думал, что это простая задача, но я не могу заставить его работать. У меня есть браузер, но решения не работают для меня.

Я пытаюсь правильно отступить файл (xml). Команда, которую я использую:

gg=G 

или ggVG= (сделал это сам, вероятно, делает что-то другое ;))

мой .vimrc является:

syntax on 
filetype plugin indent on 
set nu 
7 73

7 ответов:

мне нравится ответ Берей. Тем не менее, я думаю, что следующее немного более гибко в том, что вам не нужно изменять свой . Кроме того, легче отформатировать отдельные части XML-файла (что-то я часто делаю).

во-первых, выделите XML, который вы хотите отформатировать.

затем, в обычном режиме, типа ! xmllint --format -

ваша командная строка внизу будет выглядеть так:

:'<,'>!xmllint --format -

нажмите входить.

Техническое Описание

выделенный текст отправляется к , потом --formatЭд, и результаты xmllint помещаются поверх выбранного текста в vim. Элемент - в конце команды для получения стандартного ввода-который, в данном случае, является выделенным текстом, который vim отправляет в xmllint.

используйте внешнюю программу для отступа вашего xml файлы. В этом случае я выбрал xmllint, поэтому установите команду на :

:set equalprg=xmllint\ --format\ -

теперь вы можете выполнить

gg=G

пусть код xml файлы.

чтобы получить его каждый раз, когда вы используете ВИМ используйте autocommand, чтобы установить его.

autocommand из комментария ниже

au FileType xml setlocal equalprg=xmllint\ --format\ --recover\ -\ 2>/dev/null

простое решение, которое мне нравится, которое не требует какого-либо стороннего инструмента, - это вставить новую строку перед каждым открывающим тегом '<...> ' . Затем вы можете использовать стандартный автоматический отступ vim. Короче говоря:

  1. %s/</\r</g
  2. gg=G автоматический отступ

короткий ответ: поворот на matchit.ВИМ. Вы можете добавить packadd matchit на .vimrc, или использовать ВИМ-разумный, который включает его по умолчанию.

ответ: я пробовал много стратегий для автоматического отступа XML в Vim, в том числе xmllint подход обсуждается на Vim wiki. Проблема с xmllint (и тот же подход с другими внешними инструментами CLI, такими как xmlformat и tidy тоже) что они все настаивайте на выдавливании пустых новых строк. Если все, что вы хотите, это отступ вашего XML, без удаления пустых строк, комментариев и/или другого преднамеренного форматирования, то xmllint не самый лучший выбор.

оказывается, что команда Vim equals (=) уже поддерживает XML, пока matchit.ВИМ сценарий. Один супер простой способ, чтобы позволить ему принять tpope по ВИМ-разумный. Другой-добавить packadd matchit на .vimrc. Затем, форматирование XML будет "просто работа" из коробки.

Это легко достичь один раз~/.vimrc настроен правильно.

установите следующие параметры в ~/.vimrc:

filetype indent on
set smartindent

это позволяет переместить курсор в верхнюю часть файла и отступ до конца: gg=G

вы также можете выбрать нужный текст в визуальном режиме и нажать=, чтобы отступить его.

в VIM я автоматически отступаю весь файл (используя жесткие вкладки), используя следующую команду:

:%!XMLLINT_INDENT="^I" xmllint --format -

The ^I - Это один символ, который вы создаете с помощью: CTRL+v,CTRL+Я

у меня была та же проблема. Оказалось, что линия

set viewdir=~\.vim\views\

в своем .vimrc вызвало проблему. Просто убедитесь, что у вас его нет.