标签: omnicomplete

使用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万
查看次数

如何将ctrl x ctrl o映射到终端vim中的ctrl空间?

在网上搜索了一下后,似乎我无法映射CtrlSpace到任何东西/很多.今天有办法做到这一点,我发现通常是2岁.

mapping vim omnicomplete

50
推荐指数
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万
查看次数

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

C#的Vim omnicompletion

我想知道是否有像OmniCppComplete这样的工具用于C#(缩写中显示的方法签名是我最感兴趣的).我到处搜索都没用.

更新:我将主要从shell终端进行编辑,因此请不要建议使用GUI替代Vim.

c# vim ctags omnicomplete

18
推荐指数
2
解决办法
2650
查看次数

有没有办法改变vim omnicomplete菜单的行为?

Omnicompletion正在运行,但它会自动插入第一个结果.

我想要做的是打开omnicomplete菜单,然后键入以缩小结果范围,然后按Enter或制表符或空格或其他内容以插入所选菜单项.

这可能吗?

vim menu omnicomplete

15
推荐指数
2
解决办法
3326
查看次数

如何在INSERT模式下触发键盘上的omnicomplete/auto-completion?

VIM的omnicomplete自动完成并没有像预期的那样正常工作.

有没有办法让它变得更聪明?比如,要监控环绕文本的上下文?(例如,如果在评论或引用中不要触发)

我问,因为与IDE中的自动完成/智能感知(如Visual Studio,IntelliJ,Sublime和Atom)相比,自从切换到Vim后我无法进入一个快乐的地方(我过去曾使用所有这些进行开发).

这个问题的基本目标:

  • 在INSERT模式下,可以在A-Za-z击键时触发Omnicomplete吗?我已经通过"."触发了它.点符号.
  • 如何让Omnicomplete插入func的参数?

我是Vim新手几个月,拼命想要顺利完成工作流程.但是如果没有一个好的自动完成选项,虽然强迫我在学习我试图使用的代码时更加警惕,但它比我过去使用的其他IDE慢得多.

Atom + Go-Plus

让我们用Atom + Go-Plus来检验我的期望.

我有一个名为func generate(entropy chan<- uint64)位于同一个包中另一个Go文件中其他位置的func .

当我g在第22行输入字母时,我立即得到一个以g开头的所有内容的提示:

Atom使用Go-Plus自动完成

正如您所看到的,有3个选项可以立即弹出(前两个我认为只是代码片段).我可以使用箭头键向下滚动到任一选项.

如果我选择第3个选项(或者如果我继续输入gen字段缩小到只有1个选项),press enterAtom/Visual Studio/Sublime都会为我填写方法的详细信息:

具有go-plus自动完成的原子

我没有输入任何上述内容.它被插入,我可以覆盖细节,修改它们,或只是TAB关闭并继续键入.

Vim + Vim-Go(真的是Omnicomplete)

让我们将其与我当前(可能已损坏?)的配置进行比较omnicomplete.我在.vimrc中有这个:

set completeopt=longest,menuone

在vim中,如果我键入gen,我得到的就是我之前输入的文本,我在此缓冲区的其他地方输入(并且只在此缓冲区中,而不是在其他缓冲区中).如果我碰巧拼错了一些东西,那么我得到的拼写错误的版本是我之前为了生活而打开的.这告诉我工作中没有智能感知/自动完成 - 只是监控我做的按键操作:

vim与omnicomplete和自动完成无法正常工作

如您所见,自动填充功能无法正常输入.虽然,这确实在其他地方的评论和字符串派上用场,我有点像vim记得我输入的自由文本.

不确定Vim选项启用了什么; 但是,它不是自动完成.

现在,我可以按下CTRL-X + CTRL-O强制自动完成并generate()显示出来:

vim与omnicomplete和自动完成

这个更好; 但是,我希望它能在我输入时向我显示自动完成选项:不需要额外的3次击键来实现它.在整个几个小时的编码中,这是很多Cx Co事件.

有没有办法让Vim在INSERT模式下监视我的击键并在有匹配的ctag或函数时显示自动完成? 这可能是此功能的答案.

使用参数自动完成

自动完成有第二个问题omnicomplete我可以忽略上面的Cx Co要求如果这样做:一旦我选择了我想要自动完成的方法,它就不会为我插入参数/字段.

回到上面的截图,如果我选择那个方法,这就是我得到的:

vim与vim-go自动完成未完全完成

请注意,它不会插入 func的参数.它与上面发布的第二张图片不匹配,其中Atom,Sublime和Visual Studio中的自动完成功能都完成了参数显示的方法.

我已经阅读了vim wikia,并尝试了各种选项而set completeopt没有任何可行的选择.

例如,set completeopt+=preview选择后给我预览窗口: …

vim autocomplete omnicomplete

13
推荐指数
1
解决办法
7357
查看次数

Vim omnicompletion for Java

我已经阅读了关于Vim所谓的伟大的omnicompletion的大量博客,但无论我做什么,我都无法令人满意地工作.我花了很多时间才发现我的系统上预装的ctags版本是emacs版本,并且没有--recurse选项,但现在我已经在我的OpenJDK副本上运行了ctags-exuberant尝试使用[Cn]或[Cp]调用它时,Vim会挂起来试图获得某种代码的完成.

我真正想要的就像Eclipse中的代码完成一样; 我喜欢Vim作为编辑器,但Eclipse只是具有开箱即用的额外功能,Vim似乎失败了.带有vi-mode插件的Eclipse对我来说并不是特别有用,而且它有太多的内存和CPU占用任何用途; eclim也不太喜欢我.

任何人都可以建议一种更简单的方法来获得在Vim中实际工作的某种代码完成吗?

java vim autocomplete omnicomplete

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

Vim omni完成:继续键入以选择所需的项目

我输入时考虑一下scenerio:

file.f
Run Code Online (Sandbox Code Playgroud)

当我键入Ctrl-XCtrl-Oomn​​i-completion弹出窗口时,会显示第一个项目.这就是我所看到的:

file.fileno
       ---------
       fileno()  <-- highlighted
       flush()
       ---------
Run Code Online (Sandbox Code Playgroud)

请注意,我键入的文本("file.f")已更改为:

file.fileno
Run Code Online (Sandbox Code Playgroud)

我可以将列表中的选项向下移动到'flush',按ENTER键,它最终将会结束

f.flush()
Run Code Online (Sandbox Code Playgroud)

但我想继续键入所需的方法名称而不是使用箭头键.即我想键入"file.f","Ctrl-X Ctrl-O","l"并获得其中之一

file.fileno
       ---------
       flush()
       ---------
Run Code Online (Sandbox Code Playgroud)

要么

file.fileno
       ---------
       fileno()
       flush()  <-- highlighted
       ---------
Run Code Online (Sandbox Code Playgroud)

这可能吗?也许一些全向完成设置必须改变,或者我应该使用不同的键组合而不是Ctrl-XCtrl-O

vim omnicomplete

11
推荐指数
1
解决办法
2439
查看次数

Vim omnicompletion:可选的预览窗口

我已经搜索了不同类型的变通方法来处理在Omnicompletion中进行选择时将当前窗口拆分为显示文档的预览窗口,如关闭预览窗口(如果它在退出插入模式时存在).

但是,这些解决方案是不切实际的.有时您可能希望进入预览窗口以阅读有关当前完成模块的一些文档,但是如果使用自动命令,则无法进行此操作.

即使它会,我希望文档永远不会出现,因为我真的不想要它.

阅读源代码,pythoncomplete.vim我看到文档的值是硬编码的,如果有任何内容,它将强制显示预览窗口(如果它不能提供模块的文档,它会跳过它).

是否有一个全局选项,我不知道告诉Vim永远不会显示文档?或者能够切换它?

如果我想读在拆分窗口中的文档让我(也许一些快捷键),这样做,否则不显示我什么.

我真的想避免复制/粘贴pythoncomplete.vim以根据自己的喜好调整这个特定的设置.

vim omnicomplete

11
推荐指数
1
解决办法
2821
查看次数

标签 统计

omnicomplete ×10

vim ×10

autocomplete ×3

python ×2

c# ×1

c++ ×1

ctags ×1

intellisense ×1

java ×1

mapping ×1

menu ×1