我正在寻找 vim 的 php 自动完成解决方案。我已经在这个线程了: Vim PHP 全能补全 但这对我不起作用。 我用这个 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
谢谢
我还尝试让 php 自动完成功能在 vim 中更好地工作。我使用了 phpcomplete.vim 插件,但发现使用多个标记文件时存在一个错误(这在大多数 vimrc 配置中并不罕见)。 在这种情况下,它只是搜索第一个标记文件来解析类文件名,然后回退到标准完成(显示很长很长的非范围感知列表)
但是,我已经分叉了该插件并修复了该错误。对我来说,现在效果很好: https://github.com/sebastiankessler/phpcomplete.vim
如果您的项目是作曲家项目,请查看我的 phpcomplete-extended 插件。对于 Symfony2 和 Laravel 项目,还分别检查 phpcomplete-extended-symfony 和 phpcomplete-extended-laravel 插件。
Padawan 和 Deoplete 是在 Neovim 中实现强大的 PHP 自动完成功能的绝佳解决方案。对于 Vim,您可以使用 Neocomplete 代替 Deoplete。
我写了一篇文章如何制作 Vim PHP IDE 如果有人感兴趣:)
想要的效果是什么?你能指望什么?你得到了什么? 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
我没有得到一长串的内置函数列表,我什至没有得到私有方法。