Vim,omnicomplete和python文档

时间:2012-03-04 13:32:41

标签: python vim omnicomplete

我开始学习Python,我试图为它设置我的vim。我有vim 7.3.5.3,它有omnicompletion,我下载了pyflakes。我看过this article 并且它说omnicompletion还应该显示一些文档(还有一个带有string.atoi的图像和一些文档),但当我尝试这样的事情时:

import string
string.

并执行 CTRL-x CTRL-o 我得到了正确的列表,但我没有得到任何文档。

我应该安装其他插件还是更改一些配置文件?

修改: 我需要安装supertabs才能获得我想要的效果。

3 个答案:

答案 0 :(得分:3)

要启用代码(omni)完成,请将此行添加到vimrc($ HOME / vimrc):

autocmd FileType python set omnifunc=pythoncomplete#Complete

如果它不起作用,那么你需要这个plugin

答案 1 :(得分:2)

检查我的插件:https://github.com/klen/python-mode

从盒子里绳索omnicompletion。还有许多其他功能。

答案 2 :(得分:0)

Omni完成i_CTRL-X_CTRL-O可以在Vim中运行,而无需安装插件,但前提是您满足以下三个条件:

  1. Vim使用+python3
  2. 进行编译
  3. 已安装Python3
  4. 对于要全方位完成的Python软件包:
    • 该软件包已安装
    • 您正在编辑的脚本对Python软件包具有import语句
    • 如果执行import numpy as np,则是在键入i_CTRL-X_CTRL-O而不是np.后执行numpy.

在Vim附带的python3complete.vim中定义了Python3全能。

:new
:set filetype=python
:echo &omnifunc
python3complete#Complete

我在这里的Vim安装中找到了它:

/usr/share/vim/vim81/autoload/python3complete.vim

详细信息

1。用+ python3

编译的Vim

:ve检查Vim版本和启用的功能。这是我运行:ve

时的相关输出
VIM - Vi IMproved 8.1 (2018 May 18, compiled Jul 28 2019 15:01:57)
...
Huge version without GUI.  Features included (+) or not (-):
...
+python3/dyn
...

2。 Python安装

当有多个Python安装时,这很容易混淆。 例如,我有一个 Windows Python3安装

  • Windows Python3 从PowerShell运行
PS> python
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
  • Windows Python3 从Cygwin bash运行
$ python.exe
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
  • Windows Python3 不能从Cygwin Vim命令行运行

    :python3
    
    • 我当然可以为Vim使用:!python.exe在bash中运行python.exe

    :!python.exe
    Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
    
    • 但这对全能完成
    • 没有帮助
    • 要完成全能操作,Vim需要能够直接从Vim命令行使用Python3

Test Vim可以调用Python3:

:py3 print("hey")
hey

我必须使用Cygwin软件包管理器安装Python 以获得输出hey

3。 Python软件包安装

如果您在安装多个Python时遇到问题,请另外安装要全方位完成的Python软件包的副本。

例如,我使用Cygwin软件包管理器安装了Python软件包。

如果无法通过包管理器获得Python包,请在site.USER_SITE标识的路径上克隆包存储库的副本。这是程序包搜索路径的一部分,因此全能补全也在此路径中搜索。

从Vim中找到USER_SITE路径:

: py3 import site; print(site.getusersitepackages())

路径应如下所示:

/home/myname/.local/lib/python3.7/site-packages

或者,从bash中检查:

$ python3.7 -m site --user-site
/home/myname/.local/lib/python3.7/site-packages

请注意,即使路径不存在,也已定义。如果这是第一次将软件包放在此处,则需要创建路径。

在满足以上条件的情况下,全方位完成工程。启动一个.py文件(或打开一个新缓冲区并:set filetype=python),然后尝试键入以下内容:

import numpy as np
np.CTRL-X_CTRL-O

弹出完整的窗口,以循环显示CTRL-N(下一个)CTRL-P(上一个)。

还有另外的困惑,因为python3complete不像ccomplete那样使用标记文件。请参阅我对这篇文章的解决方法:Vim's Omnicompletion with Python just doesn't work