Vim Python 全局补全无法使用系统模块

2 投票
2 回答
1003 浏览
提问于 2025-04-15 15:20

我发现即使是系统模块,代码补全的功能也不是很好用。

比如说,如果我有一个简单的文件,里面写了:

import re
p = re.compile(pattern)
m = p.search(line)

当我输入 p. 时,我并没有看到我期待的那些方法的补全(比如我没有看到 search(),但我看到了其他的一些,比如 func_closure() 和 func_code())。

如果我输入 m.,我根本没有任何补全(在这种情况下,我期待看到 .groups())。

这似乎并不是所有模块都有这个问题……有没有人遇到过这种情况,知道怎么解决吗?

我在 WinXP 上运行的是 Vim 7.2,使用的是从 vim.org 下载的最新 pythoncomplete.vim(0.9),运行的 Python 版本是 2.6.2。

2 个回答

0

我从来没能让内置的自动补全功能在任何编程语言中正常工作。使用pysmell的时候效果最好(这个工具在github上更新得比官方版本稍微多一点)。不过,我还是觉得它不够稳定,不能一直依赖,但我记不清具体是什么原因了。

所以我只好自己创建了一大堆snipMate的代码片段,主要是针对我常用的库,同时也用默认的标签补全来辅助。

2

这种事情的自动补全比较复杂,因为它需要真正执行代码才能正常工作。

举个例子,p.search() 可能会返回 None(什么都没有)或者一个匹配对象,这取决于传给它的数据。

这就是为什么在这种情况下全能补全不管用,而且可能永远都不会管用。全能补全适用于那些可以静态确定的内容,比如一个模块的内容。

撰写回答