Vim PHP omni завершение

Ну, я никогда не использовал его, и я не уверен, рекомендовал ли я когда-либо его кому-либо, но я чувствую, что этот вопрос был бы неполным без упоминания о Simon Tatham прием сопрограммы.

33
задан T Zengerink 5 May 2012 в 09:54
поделиться

3 ответа

" Assuming Vim 7 (full version) is installed,
"   adding the following to your ~/.vimrc should work.

filetype plugin on
au FileType php set omnifunc=phpcomplete#CompletePHP

" You might also find this useful
" PHP Generated Code Highlights (HTML & SQL)                                              

let php_sql_query=1                                                                                        
let php_htmlInStrings=1

" Hope this helps!

(через http://www.linuxquestions.org/questions/linux-software-2/vim-omin-completion-for-php-621940/#post3155311 )

9
ответ дан 27 November 2019 в 18:33
поделиться

В C ++ я запускаю следующее, чтобы улучшить контекстную чувствительность:

ctags '--c++-kinds=+p' '--fields=+iaS' '--extra=+q'

Это не идеально, но после того, как ctags добавляет дополнительную информацию в файл тегов, как указано в приведенной выше команде, vim обрабатывает завершение лучше.

1
ответ дан 27 November 2019 в 18:33
поделиться

Полное завершение будет работать, только если файл тегов содержит и определение класса, и объявление переменной.

Простое решение

В общем, это означает, что вам потребуется сохранить и (повторно) сгенерировать теги файл после блога класса {...} и $ blog = new Blog (); части, но перед попыткой $ blog -> . { {1}} Это связано с тем, что функция PHP omni-complete будет искать объявление класса переменной $ blog в файле тегов.

(Кстати, если вы открыли файл тегов в буфере, перезагрузите его после его регенерации.)

Альтернатива

В документации по vim (: help ft-php-omni ) также определяется способ, который не требует индексации переменной в файле тегов, но вместо этого использует специальный комментарий в предыдущей строке:

/* @var $myVar myClass */
$myVar->

Однако определение класса все еще действительно должно быть в теге файл, и комментарий нужен каждый раз, когда вы хотите использовать омни-завершение. Так что ввод нового PHP-файла все равно не даст вам хорошего комплексного завершения: (

Просто мысль

Возможно, можно на лету сгенерировать файл временных тегов (например, плагин taglist) только несохраненного буфера и разрешить omni-complete использовать его ?? Я не большой хакер vim ...

7
ответ дан 27 November 2019 в 18:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: