protodef 根据文件名进行关联,比如,MyClass.h 与 MyClass.cpp 是一对接口和实现文件,MyClass.h 中接口为:

  1. let g:protodefprotogetter='~/.vim/bundle/protodef/pullproto.pl'
  2. let g:disable_protodef_sorting=1

pullproto.pl 是 protodef 自带的 perl 脚本,默认位于 ~/.vim 目录,由于改用 pathogen 管理插件,所以路径需重新设置。

在 MyClass.cpp 中生成成员函数的实现框架,如下图所示:

(接口生成实现)
MyClass.cpp 中我键入 protodef 定义的快捷键 \PP,自动生成了函数框架。
上图既突显了 protodef 的优点:优点一,virtual、默认参数等应在函数声明而不应在函数定义中出现的关键字,protodef 已为你过滤;优点二:doNothing() 这类纯虚函数不应有实现的自动被 protodef 忽略。同时也暴露了 protodef 问题:printMsg(int = 16) 的函数声明变更为 printMsg(unsigned),protodef 无法自动为你更新,它把更改后的函数声明视为新函数添加在实现文件中,老声明对应的实现仍然保留。

另外,每个人都有自己的代码风格,比如,return 语句我喜欢

    所以,调整了 protodef.vim 源码,把 239、241、244、246 四行改为

    1. void MyClass::getSize (void);

    所以,把 217 行改为