Vim中用于C ++的Doxygen样式注释

6
我希望自动插入 C++ 文件的注释片段。谷歌搜索建议使用 c.vim 插件。我已经安装了它。现在,当我创建一个文件时,会得到以下模板。
 /* =====================================================================================
  *
  *       Filename:  Foo.h
  *
  *    Description:  :
  *
  *        Version:  1.0
  *        Created:  04/14/2014 08:35:44 PM
  *       Revision:  none
  *       Compiler:  gcc
  *
  *         Author:  YOUR NAME (), 
  *   Organization:  
  *
  * =====================================================================================
  */

:h csupport中,我发现可以创建自己的注释模板。在项目中有没有更简单的方法获取doxygen风格的注释?或者这些模板是否可以在某个地方找到?

3个回答

8
如果你只需要这些注释而不需要c.vim的其他功能,我建议你使用一些代码片段插件,比如SnipmateUltisnips。使用这些插件创建这样的代码片段非常容易,它们也非常强大。

5

您可以使用Vim的Doxygen插件。它可以在这里下载:http://www.vim.org/scripts/script.php?script_id=987。只需输入:Dox以添加您的注释。

例如,

/**
 * @brief 
 *  
 * @param list 
 * @param size
 * @param key
 * @param rec
 *
 * @return 
 */
bool jw_search ( int *list, int size, int key, int& rec )
{
    return true;
}

1

lh-cppmu-template都带有可调整的项目头文件(默认情况下,我不得不承认很糟糕)。您需要将templates/c/internals/c-file-header.template覆盖为以下内容:

VimL: let s:filename = s:path_from_root(expand('%:p'))
VimL: let s:prj_dox_group = lh#option#get('my_prj_dox_group', lh#marker#txt('group'))
/**@file <+s:filename+>
 * @ingroup <+s:prj_dox_group+>
 * @author  <+Author()+>
 * <p>Licence:<p> Your Project Licence
 */

所有其他的东西已经被处理好了:头文件中将自动添加include guards,而foo.h将自动包含在foo.c(pp)中。

然后在类似于local_vimrc插件的插件中,您需要设置:

" File: /root/path/of/the/project/_vimrc_local.vim
:let b:my_prj_dox_group = "gMain" " you can override it in subfolders
:let b:sources_root = '/root/path/of/the/project' " for mu-template
:let b:includes = [b:sources_root . '/**'] " I can't remember which ftplugin uses b:includes
:let b:included_paths = [b:sources_root] " for ftplugin/c/c_AddInclude.vim
:let g:alternateSearchPath = 'sfr:.' " (or equivalent) for a.vim and for foo.cpp to include foo.h

顺便提一下,lh-cpp还带有:DOX命令,它将解析函数签名以自动生成其doxygen标题(@param[in/out/0]、@return、@ingroup、@throw(noexcept和已弃用的异常规范都会被分析)等将尽可能地自动填充)

如果我们以Saraht的示例为基础,则变成:

/**
 * «brief explanation».
 * «details»
 * @param[«in,»out] list  «list-explanations»
 * @param[in] size  «size-explanations»
 * @param[in] key  «key-explanations»
 * @param[«in,»out] rec  «rec-explanations»
 *
 * @return «bool»
 * «@throw »
 * @pre <tt>list != NULL</tt>«»
 */
bool jw_search ( int* list, int size, int key, int& rec )

NB: «» 表示占位符。

PS:由于我不使用 c.vim,所以无法确定其行为。


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