Omnicompletion停止提供有用的预测

我尝试在Ubuntu 12.04.1(LTS)上使用ctags 5.9〜svn20110310在vim 7.3中设置omni完成,但是我遇到了一个很奇怪的问题,即完成对同一类的实例提供了完全不同的预测。

我有以下两个文件:

// Foo.php
class Foo {
        public function do_stuff() {
                echo 'Working...';
        }
}

// index.php
require 'Foo.php';
$f = new Foo();
$f->[cursor position 1]

$g = new Foo();
$g->[cursor position 2]

当光标位于位置1时,我按CTRL + X CTRL + O它与do_stuff(正如我们所期望的那样)。但是当我在第二个位置按CTRL + X CTRL + O时,我得到一个预测列表,带key, next, rewind我做错了什么?


编辑:关于你的具体问题,如果你有一个老版本的phpcomplete.vim,你可能只能通过标记一个特殊的phpdoc标签来正确地完成一个变量(参见这个问题),或者通过重新生成标签文件声明变量后。

很可能,你没有做错什么; ctags中的PHP支持是非常基础的,并不是非常严格,这不幸意味着Vim支持也不足。 快速浏览一下ctags模块就可以解释这个问题:

CTAGS / php.c

而已。 只是一些相对基本的正则表达式。 底层的解析器内容已经不再使用了,而且悲剧性地持续了很长时间。

复杂的问题是,在Vim中PHP的标准omnicomplete函数充其量是骇人听闻的事实; 这足以说它涉及在所有打开的窗口之间切换,作为其完成过程的一部分(Vim文档明确谴责的一种做法)。 看看你自己:

phpcomplete.vim /自动加载/ phpcomplete.vim

我已经在Vim中苦苦挣扎了很长一段时间了,并且已经确定没有任何一次彻底的大修会产生满意的结果。 我已经加入了ctags开发邮件列表,并计划在那里改进PHP支持,然后继续使Vim的omnicompletion在解释型语言中正常工作。 目前,不幸的是,解决方案是等到支持更好,或者自己修复。

链接地址: http://www.djcxy.com/p/64249.html

上一篇: Omnicompletion stops giving useful predictions

下一篇: Controller, unable to use get