「vimのPHP開発環境」の版間の差分
(同じ利用者による、間の3版が非表示) | |||
行140: | 行140: | ||
=== neocompleteとneocomplete-phpによる超補完術の例 === | === neocompleteとneocomplete-phpによる超補完術の例 === | ||
neocompleteとneocomplete-phpによる超補完術の例です。 | neocompleteとneocomplete-phpによる超補完術の例です。 | ||
+ | |||
<html> | <html> | ||
<iframe width="420" height="315" src="//www.youtube.com/embed/j0d2vcg3zHY" frameborder="0" allowfullscreen></iframe> | <iframe width="420" height="315" src="//www.youtube.com/embed/j0d2vcg3zHY" frameborder="0" allowfullscreen></iframe> | ||
</html> | </html> | ||
+ | |||
=== neosnippet === | === neosnippet === | ||
<syntaxhighlight lang="vim"> | <syntaxhighlight lang="vim"> | ||
行214: | 行216: | ||
== 実行 == | == 実行 == | ||
=== quickrun === | === quickrun === | ||
+ | [[vimproc]]を利用することで非同期で QuickRun が実行できます。 | ||
<syntaxhighlight lang="vim"> | <syntaxhighlight lang="vim"> | ||
NeoBundle 'Shougo/vimproc', { | NeoBundle 'Shougo/vimproc', { |
2014年12月31日 (水) 14:52時点における最新版
このページは、vimを最速でコーディングするためのPHPの統合開発環境(IDE)にしてしまうためのドキュメントです。vimのプラグイン管理としてNeoBundleを使用します。マイクロソフトのVisual Studio系のインテリセンスのようなvimにおけるオムニ補完を強力にするneocompleteや補完する対称の説明を補完するneocomplete-phpを取り上げます。同じようなコーディングを簡略化するためのスニペット機能neosnippetを紹介します。また、シンタックスチェックの自動化のため Syntastic をとりあげ、コーディングしたものを速攻で実行するための QuickRun を紹介します。
目次
概要
vimは、選択肢が無限大です。答えはひとつではありません。これは、あくまでも1例です。 ここで紹介するの一部は、PHP用ですが、多くは、PHP以外でも利用できます。
- プラグイン管理
- 補完
- タグリスト
- シンタックスチェック
- 実行
- ドキュメント参照
さぁ、補完をはじめましょう。
プラグイン管理
PHPには、直接関係がありませんが、「PHPを補完する機能」を補完するために使用します。
mkdir -p ~/.vim/bundle git clone git://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim
set nocompatible filetype off if has('vim_starting') set rtp+=$HOME/.vim/bundle/neobundle.vim/ endif call neobundle#rc(expand('~/.vim/bundle')) NeoBundleFetch 'Shougo/neobundle.vim' filetype plugin indent on " restore filetype
補完
- オムニ補完
- neocomplete
- neosnippet
- emmet(zencoding)
neocomplete
neocompleteは、キーワード補完システムを提供します。
- ファイル名の補完
- パス
- インクルードファイル
- オムニ補完
NeoBundle 'Shougo/neocomplete.vim' "Note: This option must set it in .vimrc(_vimrc). NOT IN .gvimrc(_gvimrc)! " Disable AutoComplPop. let g:acp_enableAtStartup = 0 " Use neocomplete. let g:neocomplete#enable_at_startup = 1 " Use smartcase. let g:neocomplete#enable_smart_case = 1 " Set minimum syntax keyword length. let g:neocomplete#sources#syntax#min_keyword_length = 3 let g:neocomplete#lock_buffer_name_pattern = '\*ku\*' " Define dictionary. let g:neocomplete#sources#dictionary#dictionaries = { \ 'default' : '', \ 'vimshell' : $HOME.'/.vimshell_hist', \ 'scheme' : $HOME.'/.gosh_completions' \ } " Define keyword. if !exists('g:neocomplete#keyword_patterns') let g:neocomplete#keyword_patterns = {} endif let g:neocomplete#keyword_patterns['default'] = '\h\w*' " Plugin key-mappings. inoremap <expr><C-g> neocomplete#undo_completion() inoremap <expr><C-l> neocomplete#complete_common_string() " Recommended key-mappings. " <CR>: close popup and save indent. inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR> function! s:my_cr_function() return neocomplete#close_popup() . "\<CR>" " For no inserting <CR> key. "return pumvisible() ? neocomplete#close_popup() : "\<CR>" endfunction " <TAB>: completion. inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" " <C-h>, <BS>: close popup and delete backword char. inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>" inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>" inoremap <expr><C-y> neocomplete#close_popup() inoremap <expr><C-e> neocomplete#cancel_popup() " Close popup by <Space>. "inoremap <expr><Space> pumvisible() ? neocomplete#close_popup() : "\<Space>" " For cursor moving in insert mode(Not recommended) "inoremap <expr><Left> neocomplete#close_popup() . "\<Left>" "inoremap <expr><Right> neocomplete#close_popup() . "\<Right>" "inoremap <expr><Up> neocomplete#close_popup() . "\<Up>" "inoremap <expr><Down> neocomplete#close_popup() . "\<Down>" " Or set this. "let g:neocomplete#enable_cursor_hold_i = 1 " Or set this. "let g:neocomplete#enable_insert_char_pre = 1 " AutoComplPop like behavior. "let g:neocomplete#enable_auto_select = 1 " Shell like behavior(not recommended). "set completeopt+=longest "let g:neocomplete#enable_auto_select = 1 "let g:neocomplete#disable_auto_complete = 1 "inoremap <expr><TAB> pumvisible() ? "\<Down>" : "\<C-x>\<C-u>" " Enable omni completion. autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS autocmd FileType python setlocal omnifunc=pythoncomplete#Complete autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags let g:neocomplete#sources#omni#input_patterns.perl = '\h\w*->\h\w*\|\h\w*::'
neocomplete-php
PHPの関数名の説明を表示できます。
NeoBundle 'violetyk/neocomplete-php.vim' let g:neocomplete_php_locale = 'ja'
日本語の辞書を作成するなら、一度だけ
:PhpMakeDict ja
を実行します。
neocompleteとneocomplete-phpによる超補完術の例
neocompleteとneocomplete-phpによる超補完術の例です。
neosnippet
NeoBundle 'Shougo/neosnippet' NeoBundle 'Shougo/neosnippet-snippets' imap <C-k> <Plug>(neosnippet_expand_or_jump) smap <C-k> <Plug>(neosnippet_expand_or_jump)
emmet-vim
PHP自体の補完ではありません。HTMLの補完です。
NeoBundle 'mattn/emmet-vim'
- html:5
- div
-
div>ul>li*5
- a:mail
- form:post
-
div>p>em{hoge}+s{foo}
タグリスト
taglist.vim
NeoBundle 'taglist.vim'
:Tlist
ctags -R -n --languages=PHP --PHP-types=c+f+d # FreeBSD exctags -R -n --languages=PHP --PHP-types=c+f+d
tagbar + phpctags
NeoBundle 'vim-scripts/tagbar-phpctags', { \ 'build' : { \ 'others' : 'chmod +x bin/phpctags', \ }, \ } NeoBundle 'vim-scripts/tagbar'
Unite outline
Vim unite-outlineでソースコード探索がラクチン
NeoBundle 'Shougo/unite.vim' NeoBundle 'Shougo/unite-outline' "NeoBundle 'h1mesuke/unite-outline'
2014-04-30時点では、unite-outlineのメンテナーが不在とのことらしく、C++とかでunite-outlineが動かないバグがあるため、 Shougo/unite-outline を使用したほうが良いです。
https://github.com/h1mesuke/unite-outline/network
:Unite outline
シンタックスチェック
syntastic
NeoBundle 'scrooloose/syntastic' let g:syntastic_enable_signs=1 let g:syntastic_auto_loc_list=2
実行
quickrun
vimprocを利用することで非同期で QuickRun が実行できます。
NeoBundle 'Shougo/vimproc', { \ 'build' : { \ 'windows' : 'make -f make_mingw32.mak', \ 'cygwin' : 'make -f make_cygwin.mak', \ 'mac' : 'make -f make_mac.mak', \ 'unix' : 'make -f make_unix.mak', \ }, \ } NeoBundle 'thinca/vim-quickrun' let g:quickrun_config={'*': {'split': ''}} let g:quickrun_config._={ 'runner':'vimproc', \ "runner/vimproc/updatetime" : 10, \ "outputter/buffer/close_on_empty" : 1, \ }
PHPUnit
cd /usr/ports/devel/pear-PHPUnit3/ sudo make
:QuickRun phpunit
ドキュメント
vim-ref
PHPのドキュメントをvimの中で参照できます。 http://www.php.net/download-docs.php
NeoBundle 'thinca/vim-ref' let g:ref_phpmanual_path=$HOME . '/tmp/vim/php/php-chunked-xhtml'
mkdir -p $HOME/tmp/vim/php cd $HOME/tmp/vim/php wget http://jp1.php.net/distributions/manual/php_manual_ja.tar.gz tar zxfp php_manual_ja.tar.gz
:Ref phpmanual echo