使用vim pythoncomplete的Python docstring不会为我自己的类函数显示换行符

Python docstring with vim pythoncomplete is not displaying newlines for my own class functions

尝试在自己的类函数上使用python omni completion时,我得到了一些意想不到的结果。函数的docstring格式不正确,换行符如下图所示:

Unexpected result

当我从标准python库导入模块时,我得到了预期的结果:

Expected result

根据python-docstring约定,源文件中的换行符应解释为换行符。有人知道这里发生了什么,也许知道如何解决这个问题吗?


编辑:我写了一个自动完成,它应该比pythoncomplete好得多:https://github.com/davidhalter/jedi-vim

vim的Python Omni Completion相当愚蠢。这是一个简单的脚本,它解析当前文件和imports所有其他文件。这很危险,不应该这样做。然而,它的效果并没有那么糟糕(但也不是很好)。

所以实际上,您的两个场景之间的区别是,标准库正在被导入。你的文件也是,但不是当前的文件。如果使用名为test2的第二个模块并使用:

1
2
import test
test.mydoc.prettyStr

它应该起作用。

正在分析当前文件。解析器很简单,不太好用。DoString解析器由于这一行(行号~290)而特别奇怪:

1
2
docstr = docstr.replace('
'
, ' ')

您可以修改它-只需更改此文件:/usr/share/vim/vim73/autoload/pythoncomplete.vim可能在另一个目录中。

目前,我正在为python/vi编写更好的自动完成功能(这也是我了解这一点的原因)。但这仍然是相当多的工作。我希望我能在一个月内准备好测试版。我试着让你保持联系。