Dee*_*bek 16 vim macvim xml-parsing
我知道%在vim中会从一个标签跳到另一个标签,我也知道如何使用可视模式在xml文件中选择标签之间的整个块,使用o从顶部标签跳转到底部标签.
我已经完成了多次网络搜索,并使用.vimrc中的以下行安装了matchit插件:
filetype plugin on
runtime macros/matchit.vim
Run Code Online (Sandbox Code Playgroud)
我找到了这篇文章,并尝试过closetag.vim.
我查看了大量的xml文件,即使有多个显示器(和眼镜),也会发现能够折叠文件的某些部分很有用.
ada*_*m_0 19
缩进方法几乎对我有用,但我发现它的工作方式有点奇怪; 实际上,它折叠在标签的内容上而不是标签本身.这对我来说很有用,来自Vim维基:
let g:xml_syntax_folding=1
au FileType xml setlocal foldmethod=syntax
Run Code Online (Sandbox Code Playgroud)
此方法折叠实际标记本身,例如:
<MyLines group="first">
<Foo value="1"/>
<Foo value="2"/>
<Foo value="3"/>
</MyLines>
<MyLines group="second">
<Foo value="4"/>
<Foo value="5"/>
<Foo value="6"/>
</MyLines>
Run Code Online (Sandbox Code Playgroud)
zc在第1行或第5行输入后看起来像这样:
+-- 5 lines: <MyLines group="first">------------------------------------
<MyLines group="second">
<Foo value="4"/>
<Foo value="5"/>
<Foo value="6"/>
</MyLines>
Run Code Online (Sandbox Code Playgroud)
代替:
+-- 10 lines: <MyLines group="first">------------------------------------
Run Code Online (Sandbox Code Playgroud)
rom*_*inl 12
您需要的功能称为"折叠".
基本上,你告诉Vim使用其可用的一个'foldmethod'和管理各行的'foldlevel'与像命令za,zr或zM.你可以找到所有细节:help folding.
将这些行添加到您的vimrc应该提供一个很好的起点:
augroup XML
autocmd!
autocmd FileType xml setlocal foldmethod=indent foldlevelstart=999 foldminlines=0
augroup END
Run Code Online (Sandbox Code Playgroud)
使用这些设置,加载文件时应打开所有折叠,每行的折叠级别应从其缩进中派生,您应该能够折叠掉单行.
使用zm折叠更多,zr折少,zc关闭折叠,zo打开它,za以这两个状态之间进行切换,zM关闭所有的折叠,zR打开它们等等...
文档:
:help folding
:help 'foldmethod'
:help 'foldlevelstart'
:help 'foldminlines'
Run Code Online (Sandbox Code Playgroud)
这取自@adam_0的答案,但使用自动命令(根据@ romani的答案),并按照@Paul syntax on的评论包含.
augroup XML
autocmd!
autocmd FileType xml let g:xml_syntax_folding=1
autocmd FileType xml setlocal foldmethod=syntax
autocmd FileType xml :syntax on
autocmd FileType xml :%foldopen!
augroup END
Run Code Online (Sandbox Code Playgroud)
最后:%foldopen!一行打开所有折叠,以便在加载文件时文件是WYSWIG.但是zM如果你愿意的话,朋友们可以立即进行折叠.