Подтвердить что ты не робот

Форматирование Vim с использованием gg = G с xml

У меня есть правильно отформатированный xml файл и следуя команде, приведенной в качестве ответа здесь:

Как я могу выполнить код автоформата/отступа C в vim?

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

Прежде чем я попытался использовать эту команду, я установил тип файла в xml с помощью :set ft=xml как файл, с которого я начал, имеет расширение .mm, а также :set nowrap.

Вот мой файл ~/.vimrc:

syntax on
set history=1000
set smartindent
set tabstop=2
set shiftwidth=2
set expandtab

Как получилось, когда я выдаю gg=G, я получаю сообщение с сообщением 54 lines indented, но мой файл остается не вложенным?

4b9b3361

Ответ 1

в случае, если вы хотите попробовать Vim собственный XML indenter, вы можете...

:filetype indent on         (load indent files for specific file types etc.)
:e                          (to reload the current buffer)

это будет загружать vimscript в $VIMRUNTIME/indent/xml.vim

затем, когда вы делаете

:set indentexpr?        

... он скажет indentexpr = XmlIndentGet (v: lnum, 1)

~~

xmllint лучше, хотя... см. http://vim.wikia.com/wiki/VimTip349

У меня есть удобный keybinding, как это для него в моем .vimrc!

" one or more lines:
vmap ,px !xmllint --format -<CR>

" pretty-print current line
nmap ,px !!xmllint --format -<CR>

Ответ 2

Попробуйте ввести: :set equalprg?. Если он говорит equalprg=, это означает, что у вас нет набора программ для отступов xml, поэтому он, вероятно, делает какое-то немое действие по умолчанию. Вот руководство по установке xmllint в качестве вашего форматирования: http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html