Форматирование 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
, но мой файл остается не вложенным?
Ответы
Ответ 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