2012-09-25 3 views
7

vim 7.3에서 ctags 5.9 ~ svn20110310으로 우분투 12.04.1 (LTS)에서 PHP를위한 옴니 완성을 설정하려고하는데, 완성이 근본적으로 다른 예측을 제공하는 매우 이상한 문제로 실행되고 있습니다. 동일한 클래스의 인스턴스 Omnicompletion이 유용한 예측을 제공하지 않습니다.

I가 다음 두 파일 :

// 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] 

은 우리로 do_stuff(으로 라인을 comples O + XCTRL + CTRL 커서의 위치는 1에서 내가 을 누르면 기대할 것이다. 내가 두 번째 위치에 CTRL + XCTRL + O을 누를 때 나는 key, next, rewind로 시작 예측의 목록을 얻을. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

두 번째 위치에서 CTRL + X CTRL + O를 누르기 전에 ('$ f -> [cursor position]'을 포함하여) 유효한 코드 앞에 모든 코드가 있습니까? –

+0

예, 물론입니다. '$ f-> [커서 위치 1]'$ f-> do_stuff();' –

+0

'Foo'는'Iterator' 인터페이스를 구현합니까? – philix

답변

4

편집 : 당신이 phpcomplete.vim의 이전 버전이있는 경우 특정 문제에 관해서는, 당신은 제대로 특수한하는 PHPDoc 태그 (see this question)로 표시하여 두 변수를 완료 할 수있을 가능성 또는 변수를 선언 한 후 태그 파일을 다시 생성하십시오.

모든 경우에 잘못된 것은 아닙니다. ctags에서의 PHP 지원은 매우 기본적이며 매우 엄격하지는 않습니다. 불행히도 Vim 지원이 부족하다는 것을 의미합니다. 그것 뿐이다

ctags/php.c

: ctags 명령 모듈에서 빠른보기는 문제를 보여줍니다. 비교적 기본적인 정규 표현식의 몇 가지. 바닥에있는 파서 물건은 더 이상 사용되지 않으며 비극적으로 오랫동안 사용되지 않았습니다.

Vim에서 PHP를위한 표준 omnicomplete 함수가 최고로 해킹 된 사실이 문제를 복잡하게 만든다. 그것이 완료 과정 (Vim 문서에 명시 적으로 명시된 관행)의 일부로 모든 열린 창 사이에서 을 전환하는 것으로 충분하다고 말하면 충분합니다. 자신을 살펴 보자 : 지금 오랫동안 빔의 끔찍한 PHP 완료와 함께 분투와의 수리의 짧은 아무것도 만족스러운 결과를 생성하지 않습니다 것으로 확인

phpcomplete.vim/autoload/phpcomplete.vim

. 나는 ctags dev 메일 링리스트에 가입했다. 그리고 Vim의 omnicompletion을 해석 언어로 할 수있는대로 올바르게 작동시키기 전에 PHP 지원을 개선 할 계획이다. 현재 불행히도 솔루션은 지원이 나을 때까지 기다리거나 직접 고치십시오.