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