4

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

import string
string.

CTRL-xCTRL-o是否得到了正确的列表,但我没有得到任何文档。

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

编辑:我需要安装supertabs以获得我想要的效果。

4

3 回答 3

3

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

autocmd FileType python set omnifunc=pythoncomplete#Complete

如果它不起作用,你将需要这个插件

于 2012-03-04T13:40:12.683 回答
2

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

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

于 2012-03-12T11:13:15.347 回答
0

Omni 补全i_CTRL-X_CTRL-O在 Vim 中无需安装插件即可工作,但前提是您满足以下三个条件:

  1. Vim 编译为+python3
  2. Python3 已安装
  3. 对于您想要全方位完成的 Python 包:
    • 软件包已安装
    • 您正在编辑的脚本包含importPython 包的语句
    • 如果在做import numpy as np,你是i_CTRL-X_CTRL-O在打字后做的np.,而不是numpy.

Python3 全能补全在python3complete.vimVim 附带的 中定义。

: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
    
    • 当然我可以用:!python.exeVimpython.exe在 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
    
    • 但这无助于全方位完成
    • 为了全方位完成Vim 需要能够直接从 Vim 命令行到 Python3

测试 Vim 可以调用 Python3:

:py3 print("hey")
hey

我必须使用 Cygwin 包管理器安装 Python才能获得输出hey

3.Python包安装

如果您有多个 Python 安装问题,那么还要安装另一个您想要全面完成的 Python 包副本。

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

如果 Python 包无法通过包管理器获得,请在site.USER_SITE. 这是包搜索路径的一部分,因此全能补全也在此路径中搜索。

USER_SITE从 Vim中找出路径:

: 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

于 2020-02-08T21:47:43.220 回答