やること
- LSPの導入
- Formatterの導入
- GTAGS(GNU Gloabal)の導入
環境
- M1 MacBookAir(Big Sur)
LSPの導入
coc.nvimでcoc-phpls
導入して終了。
:CocInstall coc-phpls
これで補完や定義ジャンプができるようになる。あとは好みだけどUltisnipsで自作のsnippetを入れたりした。
Formatterの導入
やることは
1. php-cs-formatterのインストール
2. 設定ファイル.php_cs
の設置
3. vimの設定
1. php-cs-formatterのインストール
保存時に自動フォーマットがかかるようにする。 php-cs-fixerでフォーマットは行う。インストールはcomposerもしくはbrewで行う。
# composerの場合 composer global require friendsofphp/php-cs-fixer # brewの場合 brew install php-cs-fixer
2. 設定ファイル.php_csの設置
.php_cs
を設置する。書き方は下記を参考に。
qiita.com
vim ~/.php_cs
3. vimの設定
Aleで自動整形したかったが、設定しても実行できなかったのでautocmdでやることにした。下記を.vimrc
に追加。
" ============================================= " php-cs-formatterによる自動整形 " ============================================= function! s:format_php() abort :r! php-cs-fixer -q fix % --config=$HOME/.php_cs :e! " 再読み込み endfunction augroup phpsetting autocmd! autocmd BufWritePost *.php :call s:format_php() augroup END
GNU Gloabalの導入
Macにgtagsをインストールする
coc.nvimで大体は事足りるが、定義ジャンプはGTAGSを使ったほうが追いやすい場合があるので、導入する。
参考:http://blog.matsumoto-r.jp/?p=2369
公式サイトから6.4のGlobalをダウンロード。最新の6.6では./configure
で下記のエラーが出て失敗してしまう。
error: POSIX.1-2008 realpath(3) is required.
やること
cd ~/Downloads/global-6.4 ./configure --prefix=/usr/local/global make sudo make install
成功すると/usr/local/globalが作られている。/usr/local/globalにはbinディレクトリがあって、その中に実行ファイルがあるので、PATHが通っているところにシンボリックリンクを生成する。
sudo ln -s /usr/local/global/bin/gtags /usr/local/bin/gtags sudo ln -s /usr/local/global/bin/global /usr/local/bin/global
これでコマンドが実行できるようになっているはずなので、タグを作る。
gtags -v
Vimからgtagsを使えるようにする
denite-gtagsを使う。
dein.toml
[[plugins]] repo = 'Shougo/denite.nvim' hook_add = 'source ~/.config/nvim/plugin_settings/denite.vim' [[plugins]] repo = 'ozelentok/denite-gtags' hook_add = 'source ~/.config/nvim/plugin_settings/denite-gtags.vim'
denite.vim
autocmd FileType denite call s:denite_my_settings() function! s:denite_my_settings() abort nnoremap <silent><buffer><expr> <CR> \ denite#do_map('do_action') nnoremap <silent><buffer><expr> p \ denite#do_map('do_action', 'preview') nnoremap <silent><buffer><expr> <C-t> \ denite#do_map('do_action','tabopen') nnoremap <silent><buffer><expr> q \ denite#do_map('quit') nnoremap <silent><buffer><expr> i \ denite#do_map('open_filter_buffer') endfunction
denite-gtags.vim
noremap [denite-gtags] <Nop> nmap <Space> [denite-gtags] " 今のファイルの関数などの一覧 nnoremap [denite-gtags]f :Denite -buffer-name=gtags_file -prompt=> gtags_file<CR> " カーソル下の単語の定義元を表示 nnoremap [denite-gtags]d :<C-u>DeniteCursorWord -buffer-name=gtags_def -prompt=> gtags_def<CR> " カーソル下の単語の参照先を表示 nnoremap [denite-gtags]r :<C-u>DeniteCursorWord -buffer-name=gtags_ref -prompt=> gtags_ref<CR>
基本的にはcoc.nvimを使っていき、cocでジャンプできない定義をgtagsで試してみると言う感じ。composerでインストールしたパッケージなどはcocでジャンプできないことが多く、そんなときに役に立つ。