vim-php-namespace is a vim plugin for inserting "use" statements automatically.
Automatically adds the corresponding use
statement for the class under the cursor.
To use this feature, add the following mappings in ~/.vimrc
:
function! IPhpInsertUse()
call PhpInsertUse()
call feedkeys('a', 'n')
endfunction
autocmd FileType php inoremap <Leader>u <Esc>:call IPhpInsertUse()<CR>
autocmd FileType php noremap <Leader>u :call PhpInsertUse()<CR>
Then, hitting \u
in normal or insert mode will import the class under the cursor.
<?php
new Response<-- cursor here or on the name; hit \u now to insert the use statement
Expands the class name under the cursor to its fully qualified name.
To use this feature, add the following mappings in ~/.vimrc
:
function! IPhpExpandClass()
call PhpExpandClass()
call feedkeys('a', 'n')
endfunction
autocmd FileType php inoremap <Leader>e <Esc>:call IPhpExpandClass()<CR>
autocmd FileType php noremap <Leader>e :call PhpExpandClass()<CR>
Then, hitting \e
in normal or insert mode will expand the class name to a fully qualified name.
<?php
$this->getMock('RouterInterface<-- cursor here or on the name; hit \e now to expand the class name'
If you do not know how to organize use statements, (or anything else, for that matter), the alphabetical order might be a sensible choice, because it makes finding what you are looking for easier, and reduces the risk for conflicts : if everyone adds new things at the same line, conflicts are guaranteed.
This vim plugin defines a PhpSortUse()
you may use in your mappings:
autocmd FileType php inoremap <Leader>s <Esc>:call PhpSortUse()<CR>
autocmd FileType php noremap <Leader>s :call PhpSortUse()<CR>
Using pathogen
git clone git://github.com/arnaud-lb/vim-php-namespace.git ~/.vim/bundle/vim-php-namespace
Using vundle
Add to vimrc:
Bundle 'arnaud-lb/vim-php-namespace'
Run command in vim:
:BundleInstall
Download and copy plugin/phpns.vim
to ~/.vim/plugin/
The plugin makes use of tag files. If you don't already use a tag file you may create one with the following command; after having installed the ctags
or ctags-exuberant
package:
ctags-exuberant -R --PHP-kinds=+cf
or
ctags -R --PHP-kinds=+cf
ctags doesn't indexes traits by default, you have to add a --regex-php
option to index them:
ctags -R --PHP-kinds=+cf --regex-php=/^[ \t]*trait[ \t]+([a-z0_9_]+)/\1/t,traits/i
Alternatively, create a ~/.ctags
file with the following contents:
--regex-php=/^[ \t]*trait[ \t]+([a-z0_9_]+)/\1/t,traits/i
You could also use this patched version of ctags
The AutoTags plugin can update the tags file every time a file is created or modified under vim.
To keep updates fast, AutoTags won't operate if the tags file exceeds 7MB. To avoid exceeding this limit on projects with many dependencies, use a separate tags file for dependencies:
# dependencies tags file (index only the vendor directory, and save tags in ./tags.vendors)
ctags -R --PHP-kinds=+cf -f tags.vendors vendor
# project tags file (index only src, and save tags in ./tags; AutoTags will update this one)
ctags -R --PHP-kinds=+cf src
Do not forget to load both files in vim:
" ~/.vimrc
set tags+=tags,tags.vendors
See Features section for adding key mappings.
The <Leader>
key usually is \
.
- Arnaud Le Blanc
- Contributors
This was originally based on a similar script for java packages found at http://vim.wikia.com/wiki/Add_Java_import_statements_automatically (in comments).