使用gg = G和xml进行Vim格式化

时间:2012-07-25 17:35:05

标签: xml vim indentation shortcuts

我有一个格式正确的xml文件,并按照这里给出的答案命令:

How can I autoformat/indent C code in vim?

我正在尝试自动缩进文件以显示正确的嵌套。

在我尝试使用此命令之前,我使用:set ft=xml将文件类型设置为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,但我的文件仍未嵌套?

2 个答案:

答案 0 :(得分:19)

如果你想尝试Vim自己的XML压头,你可以......

: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

我在.vimrc中有这样的方便键绑定!

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

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

答案 1 :(得分:6)

尝试输入::set equalprg?。如果它显示equalprg=,则表示您没有为xml缩进设置程序,因此它可能正在进行一些哑默认操作。以下是将xmllint设置为格式化程序的指南:http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html