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

gri*_*ime 11 xml vim shortcuts indentation

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

如何在vim中自动格式化/缩进C代码?

我试图自动缩进我的文件以显示正确的嵌套.

在我尝试使用此命令之前,我将文件类型设置为xml,:set ft=xml 因为我启动的文件具有扩展名.mm,并且也是:set nowrap.

这是我的〜/ .vimrc文件:

syntax on
set history=1000
set smartindent
set tabstop=2
set shiftwidth=2
set expandtab
Run Code Online (Sandbox Code Playgroud)

为什么我发布时gg=G,我收到一条消息说54 lines indented,但我的文件仍未嵌套?

Dav*_*Lam 19

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

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

这将在$ VIMRUNTIME/indent/xml.vim加载vimscript

然后当你这样做

:set indentexpr?        
Run Code Online (Sandbox Code Playgroud)

...它会说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>
Run Code Online (Sandbox Code Playgroud)


Mat*_*ehm 6

尝试输入::set equalprg?.如果它说它equalprg=意味着你没有为xml缩进设置程序,那么它可能正在做一些哑默认操作.以下是将xmllint设置为格式化程序的指南:http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html

  • 很好地参考了将xmllint设置为格式化程序的指南.格式化XML可能是一个非常个性化的东西...例如,您可能不希望在所有情况下缩进每个标记,或者您可能希望文本换行为长text()节点.所以xmllint的替代品可以是[xmlformat](http://www.kitebird.com/software/xmlformat/)! (2认同)