3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ale+dein.vimに関して調べたこと

Last updated at Posted at 2020-10-30

この記事は?

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の動きが自分の中で落とし込みが甘い。
気が向いたらしっかり落とし込もう。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?