使用当前参数列表生成python docstring模板

时间:2013-12-05 00:50:37

标签: python vim docstring

我有一个python包即将发布,所以现在我开始使用vim慢慢地将文档字符串添加到文件中。所以对于像

这样的功能
def foo(x, y, z=None, **kwargs):

我必须在一整天内重复手动输入以下内容

""" foo does this stuff.

Parameters
----------
x: 
y:
z: optional
kwargs:

Returns
-------

"""

有没有办法通过定义一些vim宏来动态生成这个模板文档字符串(我对此一无所知,所以关于如何启动的建议也会很好)。感谢。

3 个答案:

答案 0 :(得分:3)

vim-pydocstring的作者已经将Numpy风格文档字符串的兼容性添加到了包中,现在这似乎是这个问题的最佳答案。

您可以从here

提取/下载vim插件

答案 1 :(得分:2)

重复函数名和参数通常不是什么大问题(插入模式完成有助于此);相反,你需要一个一致的骨架,你只需要在正确的位置插入变量信息。

片段就像类固醇上的内置:abbreviate一样,通常带有参数插入,镜像和内部多个停止。第一个非常着名(并且仍然广泛使用)的Vim插件之一是snipMate(受 TextMate 编辑器的启发);不幸的是,它不再维持;虽然有a fork。现代替代方案(虽然需要Python)是UltiSnips。还有更多内容,请参阅this list on the Vim Tips Wiki

有三件事要评估:第一,摘录引擎本身的功能,第二,作者或其他人提供的片段的质量和广度;第三,添加新片段是多么容易。使用一些高级引擎,您甚至可以自己提取函数和参数名称。

答案 2 :(得分:1)

宏只是记录在寄存器中的正常动作,可以毫不拖延地播放。

一种可能的策略是:

  1. 开始录制,
  2. 复制上面的那一行,
  3. 做所有需要的操作,
  4. 停止录制,
  5. 为每def行播放该宏。
  6. 看起来像那样:

    qq
    yyP
    (all your text manipulations)
    q
    :g/def /normal! @q