首页 文章

用vim进行php自动完成

提问于
浏览
4

我正在为vim寻找一个php自动完成解决方案 . 我已经在这个帖子:Vim PHP omni completion但它对我不起作用 . 我用这个bash脚本生成标签文件:

#!/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 - Vi IMproved 7.3,Exuberant Ctags 5.8

谢谢

4 回答

  • 3

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

    但是,我已经分叉插件并修复了错误 . 对我来说,它现在很棒:https://github.com/sebastiankessler/phpcomplete.vim

  • 0

    如果您的项目是作曲家项目,那么请查看我的phpcomplete-extended插件 . 对于Symfony2土地Laravel项目也分别检查phpcomplete-extended-symfonyphpcomplete-extended-laravel插件 .

  • 0

    什么是理想的效果?你能指望什么?你得到了什么? Vim没有“自动完成”功能:它自己的完成品牌被称为“全向完成”并且根本不是自动的 .

    我've been using the phpComplete script linked in one of the other question'的答案与 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
    

    我没有得到一英里长的内置函数列表,我甚至没有私有方法 .

  • 4

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

    我写了一篇文章如果有人感兴趣的话Vim PHP IDE :)

相关问题