如何在vim中默认折叠Doxygen注释?

4
我们正在考虑将Doxygen文档添加到C++头文件中,但有些人希望默认情况下不看到冗长的Doxygen文档。
在.vimrc中是否有一种方法可以默认折叠(折叠)Doxygen注释?
注意:我已经尝试了autocmd FileType c,cpp set foldmethod=syntax,它会折叠所有匹配的语法,但我无法弄清如何避免折叠函数、类等,即仅折叠Doxygen文档格式。
另一个解决方案看起来可能是vim的C-fold插件。以下是一个详细的安装顺序,以使其正常工作:
1. 添加Doxygen语法高亮
(a) 从http://vim.sourceforge.net/scripts/script.php?script_id=5安装它,这将创建~/.vim/syntax/doxygen.vim
(b) 添加~/.vim\ftdetect\doxygen.vim,其中包含以下单行代码:
au BufNewFile,BufRead *.doxygen setfiletype doxygen

(c) 添加以下两行代码到 ~/.vim/syntax/doxygen_load.vim 文件:

au! Syntax {cpp,c,idl}
au Syntax {cpp,c,idl} runtime syntax/doxygen.vim
  1. ~/.vimrc的末尾添加:

    let mysyntaxfile='/home/dchinner/.vim/syntax/doxygen_load.vim' autocmd FileType c,cpp set foldmethod=syntax autocmd FileType c,cpp set foldlevel=10

请注意,foldlevel决定了初始折叠的程度。较高的值将确保大部分内容是打开的。

  1. 添加C-fold以(取消)折叠代码或注释

(a)从 http://vim.sourceforge.net/scripts/script.php?script_id=1145 安装它,这将安装~/.vim/plugins/cfold.vim~/.vim/after/syntax/c.vim

(b)在~/.vim/syntax/doxygen.vim的末尾添加:

syn region doxygenComment start= ... keepend fold

完成!现在您可以使用以下 C-fold 插件键组合:

  • z[ 打开所有 Doxygen 样式的注释
  • z] 关闭所有 Doxygen 样式的注释
  • z{ 打开所有代码块
  • z} 关闭所有代码块

在带有 Doxygen 注释的文件中使用 vim,并按下 z] 折叠 Doxygen 注释。

1个回答

2

syntax/c.vimsyntax/doxygen.vim都使用语法折叠。由于在c.vim中没有关于折叠定义的条件,因此您无法仅关闭其中的一个部分。

您需要将默认的$VIMRUNTIME/syntax/c.vim分叉到~/.vim/syntax/c.vim中,并从语法命令中删除所有fold属性。这应该只留下doxygen部分被折叠(使用:set foldmethod=syntax)。缺点是您必须从现在开始维护您特殊的c.vim版本。


需要维护一个单独的c.vim文件会有一些困难。仍在寻找更易于维护的解决方案。 - user2242572

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接