有没有人知道有一种方法或者插件可以在Python中自动折叠很长的文档字符串?我的代码中有跨越多个页面的文档字符串,因此不断地对它们进行分页是很麻烦的。另一个棘手的部分是,文档字符串中嵌入了python测试代码,因此可能会使解析它们变得困难。请注意,我只需要自动折叠整个文档字符串,而不管其中包含什么内容。
发布于 2010-06-23 09:04:34
这是一个卑劣的技巧,但是您可以查看Python语法文件(:sp $VIMRUNTIME/syntax/python.vim
),找到三重引号字符串的所有语法区域(搜索'''
和"""
),并将fold
关键字添加到这些语句的末尾。然后只需为python文件设置foldmethod=syntax
,注释就应该被折叠起来。
发布于 2010-06-23 00:45:04
我不确定是否有插件或自动化,但如果你输入zf/
,你就可以搜索一些东西,它会折叠到它的下一个实例。因此,在如下所示的文档中(其中[]是光标):
def foo():
"""[]
Some long docstring
that takes up many
lines
"""
pass
首先在edit2中查找更新后的搜索字符串!
如果您使用命令zf/"""[ENTER]
,它应该将从当前行(文档字符串的开头)到下一次出现的"""
(应该是文档字符串的结尾)的所有内容折叠起来。
我知道这不是自动化,但也许它会在过渡期间有所帮助,或者引导您走上自动化的正确道路。查看edit2以获得更好的搜索功能,尽管我仍然不知道如何实现自动化。
希望这能有所帮助。
编辑:作为推论,您可以使用/"""\_.\{-}"""
搜索任何文档字符串,尽管这也会返回文档字符串中的代码。要搜索后跟文档字符串的函数定义,可以使用/def\_.\{-}"""\_.\{-}"""
,尽管这会在文档字符串中的def处中断。
Edit2:实际上,更多的正则表达式将我带到了这个位置:/def.\{-}):\_s*"""\_.\{-}"""
,它可以找到任何后跟文档字符串的函数。它搜索def
,后跟任何字符,然后是):
,然后是换行符和/或空格,然后是"""
,后跟的行数不超过下一个"""
,但始终确保第二个三重引号是紧跟在第一个三重引号之后的那个。
发布于 2010-06-23 01:06:36
在您的.vimrc中添加:
" folding
set foldmethod=indent
这将在每次缩进时自动折叠,在python中,缩进会转换为docstring。它工作得非常非常好。试试看。上面的答案是正确的,但需要多次击键(废话!)
https://stackoverflow.com/questions/3094331
复制相似问题