php - VIM phpomnicomplete - 多级对象层次结构

标签 php vim omnicomplete

我正在处理具有复杂对象层次结构的现有 php 项目。 Netbeans 在这里提供了很大的帮助,因为它具有自动完成功能(它并不完美,但在许多情况下足够准确)。记住所有这些属性、关系等几乎是不可能的。

但是,netbeans 是用 java 编写的,速度慢、臃肿等。 最近,我一直在玩 vim,并考虑放弃 netbeans。 我目前正在使用这个脚本:http://www.vim.org/scripts/script.php?script_id=3171

我缺少的一件事是多级别对象的自动完成,例如:

a.php

<?php
class A {

  /**
  * @var B
  **/
  public $b;

}

b.php

<?php
class B {

  /**
  * @var C
  **/
  public $c;

}

c.php

<?php
class C {

  /**
  * @var D
  **/
  public $d;

}

测试.php

$a = new A();
$a-> //omni complete here works fine, it lists "b"
$a->b-> //displays 'b' again, instead of 'c'

所以,它只适用于第一级..是否有可能以某种方式在 vim 中获得此功能?

如果没有,您如何在此类项目中找到自己的出路?

最佳答案

你的公共(public)属性只不过是空变量:

public $b;

因为您没有给它任何属性/方法或使其成为 B() 的实例,所以您不应该期望 Vim 为 $b-> 提出任何有用的补全.

与:

a.php,

<?php
class A {
  public $b = new B();   
}

b.php,

<?php
class B {
  public $c = new C();
}

c.php

<?php
class C {
  public $c;
}

test.php

<?php
  $a = new A();
  $a-> // proposes b
  $a->b-> //proposes b

  $b = $a-> // proposes b
  $b = $a->b;
  $c = $b-> // proposes c
  $c = $b->c;
  $d = $c-> // proposes d

所以……PHP 补全插件可能有点有限(毫不奇怪,Vim 是一个文本编辑器,而不是 IDE),但如果您坚持更传统(且可读)的编码风格,它似乎可以工作。

再说一遍,Vim只是一个文本编辑器。这是一个非常强大的编辑器,但它仍然只是一个文本编辑器。在某些情况下,臃肿的 IDE 是完成这项工作的正确工具,无论它有多慢,无论您​​喜欢 Vim。

关于php - VIM phpomnicomplete - 多级对象层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10071034/

相关文章:

php - 在 PHP 中,我如何知道哪些值与数组中的特定值相邻?

php - 设计连接到数据库的应用程序

vim - GVIM : auto scroll of a global command

python - 使用Vim Retab解决TabError : inconsistent use of tabs and spaces in indentation?

vim - 在vim中为每个按键调用omnicompletion

Vim SQL 全能

php - 如何在php中获取图像类型

javascript - 在 PHP 中访问 JavaScript 数据以获取 HTML 列表

vim - 您希望早点知道的简单 Vim 命令

vim - 带有shift-tab的vim中的omnicomplete不起作用?