当前位置:  开发笔记 > 编程语言 > 正文

使用Python的Vim的Omnicompletion不起作用

如何解决《使用Python的Vim的Omnicompletion不起作用》经验,为你挑选了3个好方法。

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

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

    filetype plugin on在我的.vimrc.

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

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

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

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

-- Omni completion (^O^N^P) Pattern not found

我究竟做错了什么?

更新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了,并且无法测试这些建议的效果如何.



1> codeape..:

什么模块包含您要完成的符号?它在python stdlib中吗?或者它是第三方模块?

确保模块/包在PYTHONPATH中.

在Vim中,执行:

:python import sys
:python print sys.path

要添加模块的目录:

:python sys.path.append("/path/to/directory/")


如果您为项目使用virtualenv,请确保在运行vim之前切换到终端中的环境(在同一终端中!).切换到env时,请检查vim命令行中的sys.path - 需要自动完成的模块必须在那里.

2> gotgenes..:

由于你是谨慎的并确保你的代码可以通过PYTHONPATH访问,根据代码的建议,你是否有可能遇到importVim Python omni-complete的错误?自Vim 7.2.245起,此错误仍然存​​在.

基本上,如果任何 import语句在您正在使用的文件中失败,无论它是否包含在Try-Except子句中,它都将完全破坏omni-completion.检查这一点应该相当容易,因为大多数导入都发生在文件的最开头.

如果您确定此错误是导致您的麻烦的原因,您的选择包括:

确保导入的模块位于系统路径上,而不仅仅是项目文件

评论任何import失败的陈述

修复bug

使用ropevim作为完成方法

使用不同的编辑器; Netbeans IDE有Python支持,如果你是像我这样的Vim上瘾者的jVi插件相当不错(不要让20世纪90年代的主页愚弄你)



3> Kris Jenkins..:

听起来好像提问者早已走向黑暗的一面*,但是为了它的价值我只是有这种症状,而在我的情况下,原因是我使用的模块依赖于Python 2.7但是我的Vim版本是用Python 2.5编译.

诊断我试过:python import mymodule,但由于导入依赖模块的错误而失败.然后:python import dependentmodule在链中的下一步失败了.依此类推,直到尝试导入自Python 2.7以来的新系统模块失败.发现问题.

要解决,我就是这么做的sudo port install vim +python27.但这适用于OSX.因人而异.

(*我在开玩笑.Emacs用户是我们的朋友.这是人们在记事本中编程我们都要保存......)

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有