如何才能既享受 Doxygen 的强大功能,同时又避免大量的重复性的注释内容?

解决思路: 让编辑器来替我们写那些格式和内容固定的部分,我们只负责写真正的有效内容。

所以,答案就是:Vim + DoxygenToolKit.vim 插件

DoxygenToolKit


DoxygenToolKit 是 Vim 的一款插件,用它可以很方便地添加 Doxygen 风格的注释,可以节省大量时间和精力,提高写代码的效率。

DoxygenToolKit Official Website 官网上介绍,目前定义了 5 个功能:

  • Generates a doxygen license comment. The tag text is configurable.

  • Generates a doxygen author skeleton. The tag text is configurable.

  • Generates a doxygen comment skeleton for a C, C++ or Python function or class, including @brief, @param (for each named argument), and @return. The tag text as well as a comment block header and footer are configurable.
    (Consequently, you can have \brief, etc. if you wish, with little effort.)

  • Ignore code fragment placed in a block defined by #ifdef ... #endif (C/C++). The block name must be given to the function. All of the corresponding blocks in all the file will be treated and placed in a new block
    DOX_SKIP_BLOCK (or any other name that you have configured). Then you have to update PREDEFINED value in your doxygen configuration file with correct block name. You also have to set ENABLE_PREPROCESSING to YES.

  • Generate a doxygen group (begining and ending). The tag text is configurable.

Installation

如果我们使用 Vundle 管理插件,安装步骤就非常简单了:

  1. 在 Vundle 中加入:

    Bundle 'DoxygenToolkit.vim'
    
  2. 打开 Vim,输入命令:

    :BundleInstall
    

Vundle 会自动完成安装 :-D

Configuration for c++

我们有两种方法可以修改设置,方法一是直接在 DoxygenToolKit.vim 脚本文件中修改相关变量;方法二是在 ~/.vimrc 里面修改。显然方法二更加好一点,因为如果用方法一直接改原脚本,可能还得保存备份才能恢复默认值。

因为平时写的 C++ 程序比较多,所以针对基于 Doxygen 的 C++ 注释风格,我们需要进行以下几步:

  1. 在 .vimrc 中我特别配置了以下命令:

        let g:DoxygenToolkit_briefTag_funcName = "yes"
    
        " for C++ style, change the '@' to '\'
    let g:DoxygenToolkit_commentType = "C++"
    let g:DoxygenToolkit_briefTag_pre = "\\brief "
    let g:DoxygenToolkit_templateParamTag_pre = "\\tparam "
    let g:DoxygenToolkit_paramTag_pre = "\\param "
    let g:DoxygenToolkit_returnTag = "\\return "
    let g:DoxygenToolkit_throwTag_pre = "\\throw " " @exception is also valid
    let g:DoxygenToolkit_fileTag = "\\file "
    let g:DoxygenToolkit_dateTag = "\\date "
    let g:DoxygenToolkit_authorTag = "\\author "
    let g:DoxygenToolkit_versionTag = "\\version "
    let g:DoxygenToolkit_blockTag = "\\name "
    let g:DoxygenToolkit_classTag = "\\class "
    let g:DoxygenToolkit_authorName = "Qian Gu, guqian110@gmail.com"
    let g:doxygen_enhanced_color = 1
    "let g:load_doxygen_syntax = 1
  2. 即使前一步中设置了 C++ 风格,但是生成的 Lisence 仍然是 //,而不是我们想要的 ///,所以我们还需要修改原脚本(line 362~363)为:

    let g:DoxygenToolKit_startCommentBlock = "/// "
    let g:DoxygenToolKit_interCommentBlock = "/// "

Usage

官网上也给出了使用方法:

  • License

    将光标放在需要生成 License 的地方,然后输入命令 :DoxLic

  • Author

    将光标放在合适的地方,然后输入命令 :DoxAuthor

  • Function / Class

    将光标放在 function 或者 class 的名字所在的一行,然后输入命令 :Dox

  • Ignore code fragment (C/C++ Only)

    如果想忽略调试部分的代码,那么只需要执行命令 :DoxUndoc(DEBUG) 即可

  • Group

    输入命令 DoxBlock 来插入一个注释块

为了方便使用,我们可以自定义一些 map,省去输入命令的繁琐。

Example

同样是官网上的例子:

假设有个函数如下

1
2
3
4
5
6
7
int
foo(char mychar,
int myint,
double* myarray,
int mask = DEFAULT)
{ //...
}

那么执行 :Dox 命令之后会生成以下内容

 1
2
3
4
5
6
7
8
9
10
/**
* @brief
*
* @param mychar
* @param myint
* @param myarray
* @param mask
*
* @return
*/

Ref

DoxygenToolKit.vim

DoxygenToolKit.vim 插件配置的更多相关文章

  1. 「个人vim插件+配置」

    2016.10.4 filetype indent on syntax on set nu ai ci si set sw= ts= set autochdir set backspace= colo ...

  2. vim 插件配置博客记录

    本来打算自己写下各种经常使用vim的插件安装方法, 可是搜索了下, 发现别人都写过了, 在写一遍也没有意思, 特此记录. Vim 经常使用命令 http://blog.csdn.net/hittata ...

  3. vim插件配置

    OS:kali linux tool:vim 上图: 0x00 需要用到的插件及其下载地址 左边的一栏显示文件目录结构的用到的插件为 NERDTree 下载地址:https://github.com/ ...

  4. vim插件配置(一)

    vim代码自动显示提示代码插件:AutoComplPop:  代码(普通变量函数) c/c++代码(类的 . , ->, :: 操作符)的自动补全插件: OmniCppComplete

  5. 我的vim插件配置

    set nocompatible " be iMproved, required filetype off " required " set the runtime pa ...

  6. 常用VIM插件配置

    airline 状态栏美化 除了airline本体还要下airline主题 和打过powerline补丁的字体 常用设置: set laststatus=2 " 总是显示状态栏 set no ...

  7. vim学习、各类插件配置与安装

    vim学习.各类插件配置与安装 vim 插件 配置 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶书籍<vim实用技巧>.注:进阶书籍可以在 ...

  8. vim插件和配置

    vim插件和配置 插件 pathogen 可以方便地管理vim插件 在没有pathogen的情况下,vim插件的文件全部都放在.vim目录,卸载插件很麻烦,pathogen可以将不同的插件放在一个单独 ...

  9. vim学习、各类插件配置与安装【转】

    转自:https://www.cnblogs.com/forest-wow/p/6916531.html 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶 ...

随机推荐

  1. Ubuntu_ROS中应用kinect v2笔记

    Ubuntu_ROS中应用kinect v2笔记 个人觉得最重要的资料如下: 1. Microsoft Kinect v2 Driver Released http://www.ros.org/new ...

  2. gdb学习(二)[第二版]

    查看运行时数据 print - 查看变量值 ptype – 查看变量类型 #ptype i #ptype "aaa" 打印字符串"aaa"的类型 #ptype  ...

  3. Android开发技巧——使用Dialog实现仿QQ的ActionSheet菜单

    最近看到有人用Dialog来实现QQ的仿ActionSheet的自定义菜单,对于自己没实现过的一些控件,看着也想实现一下.于是动手了一下,发现也不难,和大家分享一下. 本文原创,转载请注明出处:htt ...

  4. android wheelview实现三级城市选择

    很早之前看淘宝就有了ios那种的城市选择控件,当时也看到网友有分享,不过那个写的很烂,后来(大概是去年吧),我们公司有这么一个项目,当时用的还是网上比较流行的那个黑框的那个,感觉特别的丑,然后我在那个 ...

  5. Linux配置文件系统及程序的限制 - ulimit

    想象一个状况:我的 Linux 主机里面同时登陆了十个人,这十个人不知怎么搞的, 同时开启了 100 个文件,每个文件的大小约 10MBytes ,请问一下, 我的 Linux 主机的内存要有多大才够 ...

  6. C语言实现printf的基本格式输出%d,%c,%p,%s

    关于printf的实现,想必看过我之前发表的文章的伙伴们已经了解了不少基本的知识.好了,接下来不多说了,直接上源码,看看一种简单的实现方式: #include <stdio.h> #def ...

  7. OpenCV+OpenCL stereo match 代码

    之前配置cuda跟opencv 的混合编程,发现只要使用的东西多半还要用opencv的代码编译一次,加上cuda的编译太浪费时间了,我看了几个博客,觉的opencl这个可能会比较好整,就把opencv ...

  8. 面试之路(7)-BAT面试题之计算机的三大原则

    1.计算机是执行输入.运算.输出的机器 计 算 机 的 硬 件 由 大 量 的 IC(Integrated Circuit,集成电路)组成.每块 IC 上都带有许多引脚.这些引脚有的用于输入,有的用于 ...

  9. Java继承与多态

    感慨一下,到了现在感觉Java里面很多东西都是模模糊糊,不能这样了,一点点解决吧.今天看了继承与多态的一些内容,感觉看得很浅,先写下来,算是巩固,如果后面看到更好的内容,再慢慢加上去. 继承与多态,他 ...

  10. RHEL 6.9 udev 将lv绑定raw devices

    环境 RHEL6|RHEL7,LVM2,RAW device 用途 使用LVM的lv逻辑卷绑定裸设备 1. 编辑 /etc/udev/rules.d/60-raw.rules 添加如下: ACTION ...