如何为非标准Python库向Vim添加自动完成功能?

Kit*_*Kit 5 python vim autocomplete

例如,我有一个使用Google App Engine SDK的Python脚本:

from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app
Run Code Online (Sandbox Code Playgroud)

该模块db有一个子模块Key,所以我尝试在其上使用自动完成:

db.KTab

但是在Vim窗口的底部,我得到以下信息:

-- Omni completion (^O^N^P) Pattern not found
Run Code Online (Sandbox Code Playgroud)

如何包含非标准Python库的路径,以便Vim自动完成可以找到它们?并展示他们的文档字符串?

Rég*_* B. 4

您需要将库文件添加到标签文件中。例如,如果您已通过 pip 在位于 env/ 的虚拟环境中安装了 Google App Engine:

virtualenv --no-site-package env/
source env/bin/activate
pip install google_appengine
Run Code Online (Sandbox Code Playgroud)

...那么你应该执行:

ctags -R --python-kinds=-i -o tags env/
Run Code Online (Sandbox Code Playgroud)

如果您没有通过 pip 安装 google_appengine,那么您应该找到 python 库的路径(提示:它应该由 $PYTHONPATH 指示。根据参考页:“在 Unix 上,这通常是 .:/usr/local /lib/python.") 并将 env/ 替换为您找到的路径。

最后,您的 .vimrc 文件应该解析您的标签文件。例如,在我的 .vimrc 中,我有:

set tags+=/path/to/my/tags
Run Code Online (Sandbox Code Playgroud)