相关疑难解决方法(0)

使用Python的Vim的Omnicompletion不起作用

我在Stack Overflow和其他地方搜索了一个小时.唉! 请帮忙.Vim的omnicompletion 不起作用.

  1. 我有使用Python支持编译的Vim 7.2.

  2. filetype plugin on在我的.vimrc.

  3. .py文件打开时,:echo &omnifunc打印pythoncomplete#Complete.

  4. 我正在处理一个大型项目,并且我tags生成了一个文件exhuberant-ctags.这是在Vim的ctags路上.我可以通过^]在符号上键入来测试它然后我接受符号的定义.

  5. 更新1:我项目的所有代码都在python-in-Vim的路径中.我能:python import myproject成功.

现在,在我尝试的任何地方C-x C-o,我得到的只是:

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

我究竟做错了什么?

更新2:当我C-x C-o C-n在模块级别键入时,Vim会显示一个完成弹出窗口,其中包含项目中其他模块的一些模块级常量.但它只是常量(符号大写字母),完成仍然无法在其他任何地方工作.

更新3:我发现C-x C-o在文件的顶部开始某种omnicompletion,并完成提示pprint.菜单和pprint模块中的所有内容的快速参考.但是,我自己的模块的导入都没有完成.

一年后更新4:我放弃并学习了Emacs.我去过黑暗的一面,神秘的阴谋和香料之地,我告诉你我找到了The Way.

两年后更新5:我回到了Vim.Emacs很漂亮,但即使经过1.5年的Emacs,我仍然可以更快地完成Vim的工作.但是,我现在已经停止编写Python了,并且无法测试这些建议的效果如何.

python vim autocomplete omnicomplete

52
推荐指数
3
解决办法
2万
查看次数

Vim Python完成

我在使用Vim和Python时遇到了麻烦.事实上,我很困惑这是如何工作的.

我在Windows 7上有通用的gvim 7.3(使用python/dyn)我正在使用SuperTab插件,其中一些是特定于python的,在vimrc中有以下设置:

au FileType python set omnifunc=pythoncomplete#Complete
let g:SuperTabDefaultCompletionType = "context"
let g:SuperTabContextDefaultCompletionType = "<c-n>"
Run Code Online (Sandbox Code Playgroud)

我没有设置PYTHONPATH环境可变性.

完成适用于系统模块.

起初我认为它对于非系统代码根本不起作用,但事实并非如此.以下代码最能显示正在发生的事情:

import numpy.random   # if this line is commented completion in last line works

class C(object):
    def __init__(self, x_):
        self.x=x_

    def getX(self):
        return self.x

    def pr(self):
        print 'ok'

a=C(10)  # nothing changes if I put C() instead, even though it would be wrong
a.  # here is completion in question
Run Code Online (Sandbox Code Playgroud)

问题是如果对导入行进行注释,则完成工作(a.<tab>建议使用getX和pr).但它有导入numpy.random,完成刹车.注意:当我运行代码时,此导入正常工作.

Python完成的先决条件是什么?发生了什么,我该怎么做才能完成Python的完成工作.

因为我(相对)是Vim的新手,所以任何建议都表示赞赏.

编辑: 似乎问题是在导入中使用ab表单.如果我从numpy导入随机,一切都很好.如果这很容易解决,我也想从中工作.但是现在我知道如何绕过它并不是那么重要.

是否有更像这样的不寻常的问题,以便我知道未来会发生什么?

python vim omnicomplete

28
推荐指数
2
解决办法
1万
查看次数

有没有人为vim找到一套好的python插件 - 特别是模块完成?

我正在寻找一套插件,可以帮助我最终切换到vim全职.

现在我正在使用Komodo取得了一些成功,但他们的vim绑定有足够的错误,我已经厌倦了它.

不过,我在Komodo所喜欢的是代码完成.所以,这就是我正在寻找的(按重要性排序).

  • 代码完成,意思是:编写完整模块/功能/等的能力.在python路径上的任何模块中,而不仅仅是系统模块.完成时显示文档字符串的奖励积分.
  • 跳转到类定义.我猜CTAGS会这样做,所以你们如何管理自动更新你的标签文件?
  • 用于管理缓冲区的项目类型管理:理想情况下,可以在目录结构中grep文件名以打开它.在缓冲区打开时显示类定义索引的奖励.
  • Bzr整合.不是非常重要,因为大部分内容我都可以放到shell中去做.

python vim code-completion

22
推荐指数
1
解决办法
8770
查看次数

使用VIM完成内省代码?...或其他具有此功能的轻量级编辑器?

我一直在网上试图找到一种方法让VIM完成类似于PyDev的代码完成.它似乎不可能!

- 我试图使用此链接建议的omnicompletion:http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/ .

- 我已经尝试了几个插件来缓解这个问题,但没有工作.

"omnicomplete"功能不是我想要的.它只需要处理您正在处理的文件中的所有单词,并使用它们来尝试完成我正在做的事情.例如,如果我写道:

import numpy
a_single_array = range(100)
np.a#[then I hit cntrl+n to code complete]
Run Code Online (Sandbox Code Playgroud)

它会吐出"a_single_array"作为可能的完成 - 但这是荒谬的!这不是"numpy.a ......"的有效完成.

这是什么问题?所有插件都要做的就是从你所在的文件夹中运行一个dir(你要找的工作),然后过滤输出!这不是那么难!(我想你也必须阅读你正在编辑的文件,并过滤掉那个以注意名称的变化......但这就是它!)

说到它会有多容易......如果没有任何已经制作的东西,我本想考虑自己编写脚本!关于如何做的任何指南?

python ide vim autocomplete code-completion

7
推荐指数
1
解决办法
1856
查看次数

gtk3和pygobject的自动完成功能

我正在寻找为gtk3 libs添加自动完成功能的可能性.我已经尝试过vim-jedi,因为它似乎是vim和python的最先进的自动完成机制(这里也推荐),但这对于从gi.repository导入的gtk3东西不起作用

from gi.repository import Gtk, GdkPixbuf, Gdk, GObject
Run Code Online (Sandbox Code Playgroud)

我看了一下gi.repository网站包.在那之后,我并不惊讶jedi无法对Gtk模块的方法进行内窥,因为这些模块在那里生成了很多魔法;-)

此外,像PyCharm这样的其他"真正的"IDE 也不支持以这种方式导入的模块的完成(我尝试过社区版,但我敢打赌专业版也不支持).

有没有人知道如何将自动完成添加到vim(偏好的解决方案)或其他编辑器/ IDE?

GObject,Gtk模块包含很多方法/类,并且不容易记住您需要的所有内容.此外,似乎只有gtk3的C api的文档,其中方法名称并不总是与python api中的相同...

python vim pygobject python-3.x gtk3

6
推荐指数
1
解决办法
1044
查看次数