ВИМ: контекстная завершение кода для PHP

Vim дает мне слишком много вариантов, когда я использую автозавершение кода.
В классе, и типа $class - > это дает мне около миллиона вариантов, так что не только из самого класса, но и из php, все глобалы когда-либо созданных, короче говоря: беспорядок.

Я хочу иметь только параметры из самого класса (или родительского класса подтипа, из которого он расширяется), поэтому завершение кода с учетом контекста или области, например, Netbeans. Как я могу это сделать?

мой нынешний конфигурация такова:

Я использую ctags и создал 1 файл ctags для нашего (большого) приложения в корне.

Это .файл ctags я использовал для создания файла ctags:

-R
-h ".php"
--exclude=.svn
--languages=+PHP,-JavaScript
--tag-relative=yes
--regex-PHP=/abstracts+classs+([^ ]+)//c/
--regex-PHP=/interfaces+([^ ]+)//c/
--regex-PHP=/(publics+|statics+|protecteds+|privates+)$([^ t=]+)//p/
--regex-PHP=/consts+([^ t=]+)//d/
--regex-PHP=/finals+(publics+|statics+|abstracts+|protecteds+|privates+)functions+&?s*([^ (]+)//f/
--PHP-kinds=+cdf
--fields=+iaS

Это .файл vimrc:

" autocomplete funcs and identifiers for languages
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c set omnifunc=ccomplete#Complete

" exuberant ctags
" the magic is the ';' at end. it will make vim tags file search go up from current directory until it finds one.
set tags=projectrootdir/tags;
map <F8> :!ctags

" TagList
" :tag getUser => Jump to getUser method
" :tn (or tnext) => go to next search result
" :tp (or tprev) => to to previous search result
" :ts (or tselect) => List the current tags
" => Go back to last tag location
" +Left click => Go to definition of a method
" More info:
" http://vimdoc.sourceforge.net/htmldoc/tagsrch.html (official documentation)
" http://www.vim.org/tips/tip.php?tip_id=94 (a vim tip)
let Tlist_Ctags_Cmd = "~/bin/ctags"
let Tlist_WinWidth = 50
map <F4> :TlistToggle<cr>

"see http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE
" will change the 'completeopt' option so that Vim's popup menu doesn't select the first completion item, but rather just inserts the longest common text of all matches
:set completeopt=longest,menuone
" will change the behavior of the <Enter> key when the popup menu is visible. In that case the Enter key will simply select the highlighted menu item, just as <C-Y> does
:inoremap <expr> <CR> pumvisible() ? "<C-y>" : "<C-g>u<CR>"
"
inoremap <expr> <C-n> pumvisible() ? '<C-n>' :
   '<C-n><C-r>=pumvisible() ? "<lt>Down>" : ""<CR>'

inoremap <expr> <M-,> pumvisible() ? '<C-n>' :
   '<C-x><C-o><C-n><C-p><C-r>=pumvisible() ? "<lt>Down>" : ""<CR>'
11
задан eddy147
05.03.2023 8:25 Количество просмотров материала 3103
Распечатать страницу

1 ответ

С PHPComplete по умолчанию, вы должны генерировать tags каждый раз, когда вы делаете $foo = new MyClass. Если вы сделаете это, вы получите правильное завершение.

но есть еще один скрипт PHPComplete, который исправляет эту проблему. Ты должен попробуй.

1
отвечен romainl 2023-03-06 16:13

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх