この記事は?
aleとdein.vimを使っていく中で困ったことや調べた事をまとめる。
規模が大きくなってきたらaleとdein.vimで分けるかも。
aleとは?
色々なファイルのlintツール。
以前はファイルの種類によってツールが別れてたが、これ一つで一通りまかなえるので最近(2020.11)のおすすめ。
(もっといいやつあったら教えて下さい)
dein.vimとは?
vimのプラグインとプラグイン毎の設定を管理してくれるやつ。
今までは .vimrc
に記載していたが、インストールの記述と設定の記述が煩雑になってわけわからなくなりがちだったので、これできれいにまとめる。
Refs
ale
正しいリポジトリは?
以前は w0rp/ale
だったが、 dense-analysis/ale
に変わっていた。
https://github.com/dense-analysis/ale
lint関連
lintがなぜか動かない時
どこかでエラーが出てる可能性がある。
vimで対象ファイル開いている時に、 :ALEInfo
と打つと、チェック実行時ログが出てる。
成功時にはチェック結果が、失敗時にはエラーログが出てるので、これをヒントに調査する。
php_codesniffer
- vim起動時のlintや自動整形を稼働させるには環境ににcomposer等でphp_codesnifferを入れておく必要あり。
-
phpcs.xml
等で作成したカスタム設定をaleでも適用させたいがなぜか反応せず。(調査中) - ちなみに単独で動かすなら、
phpcs --standard=phpcs.xml <file name>
で指定
docker(hadolint)
エラーメッセージが結構わかりにくいのでここで詳細調べる
https://github.com/hadolint/hadolint/blob/master/README.md#rules
dein.vim
dein.toml公開(lint部)
[[plugins]] # lint tool
repo = 'dense-analysis/ale'
hook_add = '''
"行頭のマークが出る部分を常に表示するようにする
let g:ale_sign_column_always = 1
"phpcsのスタイル
"let g:ale_php_phpcs_standard = '~/phpcs.xml,PSR1,PSR2'
"phpcbfのスタイル
"let g:ale_php_phpcbf_standard = '~/phpcs.xml'
"自動整形
let g:ale_fixers = {
\ 'php': ['phpcbf'],
\}
"ファイル保存時に整形実行
let g:ale_fix_on_save = 1
" 保存時のみ実行する
let g:ale_lint_on_text_changed = 0
"lint
let g:ale_linters = {
\'javascript': ['eslint'],
\'ruby': ['rubocop', 'reek'],
\'php': ['phpcs', 'phpcbf'],
\'Dockerfile': ['dockerfile_lint', 'hadolint'],
\'scss': ['stylelint']
\}
let g:ale_dockerfile_hadolint_use_docker = 'enable'
let g:ale_scss_stylelint_use_global = 1
" 表示に関する設定
" let g:ale_sign_error = ''
" let g:ale_sign_warning = ''
let g:airline#extensions#ale#open_lnum_symbol = '('
let g:airline#extensions#ale#close_lnum_symbol = ')'
" エラー行にカーソルをあわせた際に表示されるメッセージフォーマット
let g:ale_echo_msg_format = '[%linter%]%code: %%s'
highlight link ALEErrorSign Tag
highlight link ALEWarningSign StorageClass
" Ctrl + jで次の指摘へ、Ctrl + kで前の指摘へ移動
nmap <silent> <C-w>k <Plug>(ale_previous_wrap)
nmap <silent> <C-w>j <Plug>(ale_next_wrap)
'''
hook_post_source = '''
let g:ale_linters = {
\'Dockerfile': ['dockerfile_lint', 'hadolint']
\}
'''
編集後記
fix_on_saveは、整形できないエラーがあった際にエラー文言だけが出力されて保存されるのでどうしようか迷い中。
hookのタイミングはいつも忘れる。
hookの動きが自分の中で落とし込みが甘い。
気が向いたらしっかり落とし込もう。