我用Vundle安装了phpcomplete.vim,希望我能为PHP获得自动完成。
然而,只有少数mysqli函数出现。甚至连mysqli_connect()都没有出现。
我是否做错了什么或这些功能没有实现?我能用其他插件什么的吗?
发布于 2015-01-07 20:49:50
问题似乎是内置函数/类地图 (警告,它是一个相当大的文件)并不包含所有的mysqli_*函数,比如mysql_connect (有些函数像mysqli_get_cache_stats)。
根本原因可能是由于代码,它从文档中生成这些映射,在本例中,它可能是对此类别名(如mysqli_connect)和函数的错误/缺乏支持,这些函数既可以称为过程函数,也可以通过各种mysqli相关类(如mysqli_close)来调用。
如果您正在使用该插件的github主版本,您可以通过misc/builtin_manual.vim文件手动添加条目,它将如下所示(只需将其添加到文件的末尾):
call extend(g:phpcomplete_builtin['functions']['mysqli'], {
\ 'mysqli_connect(': '[ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw") [, string $dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket = ini_get("mysqli.default_socket") ]]]]]] | mysqli',
\ 'mysqli_escape_string(': 'string $escapestr | string',
\ 'mysqli_execute(': ' mysqli_stmt $stmt | bool',
\ 'mysqli_set_opt(': ' mysqli $link, int $option, mixed $value | bool',
\ })只需在结果中添加更多您希望看到的内容。
如果您想玩内置地图(我写这篇文章时10个月没有更新它们),您可以在这里中找到生成器,您将需要来自php.net和命令行php的文档。
如果您能在github上打开一个问题,我会非常感激的,这样我们就可以有一个合适的地方讨论了。
更新:
我在推卸承诺中更新了内置地图,并支持生成器中的“过程样式”别名。
发布于 2015-01-06 21:04:20
编辑:这篇文章讨论了Vim7.4附带的phpcomplete.vim版本。所讨论的版本是shawncplus的版本:phpcomplete.vim。我强烈建议升级使用shawncplus版本,因为它更完整(双关!)。
旧phpcomplete.vim
遗憾的是,php完成了Vim附带的功能,没有许多公共功能,例如json_decode。我自己也加入了完成项目。
将以下内容添加到~/.vim/after/ftplugin/php.vim
if !exists('g:php_builtin_functions')
call phpcomplete#LoadData()
let g:php_builtin_functions['json_decode('] = 'string $json [, bool $assoc [, int $depth [, int $options]]] | mixed'
let g:php_builtin_functions['json_encode('] = 'mixed $value [, int $options [, int $depth]] | string'
let g:php_builtin_functions['json_last_error_msg('] = 'void | string'
let g:php_builtin_functions['json_last_error('] = 'void | int'
endif注意:我的示例只是添加了JSON函数。您需要为mysqli函数更改这些函数。
这里的好处是我为php文件使用的K命令的版本(放入~/.vim/after/ftplugin/php.vim中):
function! s:PHPQuickMan(word)
let word = a:word . '('
echo word . get(g:php_builtin_functions, word, ' can not be found')
endfunction
nnoremap <buffer> K :call <SID>PHPQuickMan(expand('<cword>'))<cr>https://stackoverflow.com/questions/27806037
复制相似问题