我正在为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
感谢
答案 0 :(得分:4)
我也试过让vin自动完成在vim中运行得更好。我使用了phpcomplete.vim插件,但发现在使用多个标记文件时存在一个错误(在大多数vimrc配置中并不常见)。 在这种情况下,它只搜索第一个标记文件以解析类文件名,然后回退到标准完成(显示一个很长的非范围感知列表)
然而,我已经分叉插件并修复了错误。对我来说,它现在很棒: https://github.com/sebastiankessler/phpcomplete.vim
答案 1 :(得分:3)
如果你的项目是作曲家项目,那么请查看我的phpcomplete-extended插件。对于Symfony2土地Laravel项目也分别签出phpcomplete-extended-symfony和phpcomplete-extended-laravel插件。
答案 2 :(得分: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
我没有获得一英里长的内置函数列表,我甚至没有私有方法。
答案 3 :(得分:0)
Deoplete是在Neovim中拥有强大的PHP自动完成功能的绝佳解决方案。对于Vim,您可以使用Neocomplete代替Deoplete。
如果有人有兴趣,我写了一篇如何制作Vim PHP IDE的文章。)