2012-03-25 193 views
4

我正在寻找vim的php自动完成解决方案。我已经在这个线程: Vim PHP omni completion 但它不适合我。 我生成这个bash脚本标签文件:vim自动完成功能

#!/bin/bash 
exec ctags -V -f tags \ 
-h \".php\" -R \ 
--exclude=\"\.git\" \ 
--totals=yes \ 
--language-force=PHP \ 
--tag-relative=yes \ 
--PHP-kinds=+cfiv \ 
--regex-PHP='/(abstract)?\s+class\s+([^ ]+)/\2/c/' \ 
--regex-PHP='/(static|abstract|public|protected|private)\s+(final\s+)?function\s+(\&\s+)?([^ (]+)/\4/f/' \ 
--regex-PHP='/interface\s+([^ ]+)/\1/i/' \ 
--regex-PHP='/\$([a-zA-Z_][a-zA-Z0-9_]*)/\1/v/' \ 
kernel/classes/ 

但可根据需要自动完成是没有的。我甚至不知道该插件是否正在加载。所以,我怎么看,如果插件加载? (该插件位于捆绑下,我使用病原体,并且其他插件可以工作..) 有必要激活其他功能吗? 我已经VIM - 六提高7.3,旺盛Ctags的5.8

感谢

回答

0

会是什么目的呢?你能指望什么?你得到了什么? Vim没有“自动完成”功能:它自己的完成品牌被称为“全向完成”,并且不是自动的。

我一直在使用phpComplete脚本链接在其他问题的答案之一与ctags没有问题相当一段时间。事实上,我以为我使用它的时候写了下面的例子,但是我忘记了几周前我已经删除了一些脚本和插件,包括phpComplete.vim

所以下面的工作非常好,现货Vim 7.3/Exuberant Ctags 5.8。

随着a.php

<?php 
    class MyClass { 
    public function MyClass(argument) { 
     echo 'Hello.'; 
    } 
    private function secret() { 
     echo 'Shhhh…'; 
    } 
    public function say() { 
     echo 'what?'; 
    } 
    } 
?> 

光标在b.php

<?php 
    include 'a.php'; 

    $example = new MyClass(); 
    $example->| //cursor here 
?> 

<C-x><C-o>指示给了我这些选择:

say(f 
MyClass(f 

我没有得到一个长达一英里的内建函数列表,我甚至没有私有方法。

+1

JEP,这种行为会的愿望。使用你的代码作为测试(加上一些静态变量),当我按在$ example-> |我得到一个很长的函数列表,比如ArrayIterator :: rewind或者PDO :: exec等等。如果我按$ example :: |我确实得到公共职能。还有一件事,您是如何生成标签的? – Juanolo 2012-03-27 07:25:05

+0

我在每个':w'之后使用一个简单的':!ctags -R .'来生成我的'tags'文件。就像我说的,我没有任何与PHP相关的插件/设置:我使用Vim的默认全向补全,在两个稍微不同的Vim 7.3版本中,Mac OS X和Ubuntu 10.10以及与之相同的Exuberant Ctags 5.8两个设置中的相同行为。它在Vim 7.2中的工作原理与我的沙盒VPS一样。确保在执行''之前已经(重新)生成了'tags'文件。 – romainl 2012-03-27 08:52:30

+0

vim具有自动完成功能 - Ctrl + N对于bash&perl工作得非常好 – Alexander 2015-06-23 11:01:49

4

我也试图让php自动完成在vim中更好地工作。我使用了phpcomplete.vim插件,但发现使用多个标签文件时存在一个错误(在大多数vimrc配置中并不罕见)。 在这种情况下,它只是搜索第一个标记文件来解析类文件名,然后回退到标准完成(显示一个很长的没有范围意识列表)

但是,我分叉了插件并修复了错误。对我而言,现在的效果非常好: https://github.com/sebastiankessler/phpcomplete.vim

0

PadawanDeoplete是在Neovim中拥有强大的PHP自动完成功能的绝佳解决方案。对于Vim,您可以使用Neocomplete而不是Deoplete。

我写了一篇文章如何使Vim PHP IDE如果有人有兴趣:)