ale
#Vim #VimScript
概要
https://github.com/w0rp/ale
編集中のバッファに対して、非同期でリンタやフィクサを実行できるVimプラグインです
Language Server Protocolやtsserverのクライアントとしても利用できます
インストール
dein.vim
code:toml
plugins
repo = 'w0rp/ale'
使い方
基本的には、特に設定をしなくとも、いい感じに動いてくれます
ただし、以下のようなことをしたいときは、設定が必要です
ファイルを保存したときだけリンタを実行したい
特定のリンタのみを実行したい
用語
リンタ
ソースコードの文法チェックを行うプログラムのこと
フィクサ
prettierやgofmt等のソースファイルの整形を行うツールをaleではフィクサと呼びます
マーカーの変更方法
g:ale_sign_warning及びg:ale_sign_errorを設定することで、マーカーを変更できます
例えば、以下のように設定すると、警告時のマーカーが「🥺」に、エラー発生時のマーカーが「🙅」になります
code:vim
let g:ale_sign_warning = "🥺"
let g:ale_sign_error = "🙅"
キーボードマッピングの設定
code:vim
nmap <Leader>a ale
...
" <Leader>alでリンタを実行する
nmap <silent> alel <Plug>(ale_lint)
" <Leader>afでフィックサを実行する
nmap <silent> alef <Plug>(ale_fix)
コマンド
:ALEFindReferences
カーソル直下のシンボルの参照を一覧表示します
:ALELint
編集中のバッファに対してリンタを実行します
:ALEFix
編集中のバッファに対してフィクサを実行します
実行対象のフィクサはg:ale_fixersで設定できます
code:vim
let g:ale_fixers = {
\ '*': 'remove_trailing_lines', 'trim_whitespace',
\ 'javascript': 'eslint',
\ 'typescript': s:has_deno ? 'deno' : 'prettier',
\ 'go': 'gofmt'
\}
変数
g:ale_linters
ファイルタイプをキー、linterプログラムの一覧を値として保持する辞書を設定する。
g:ale_linters_explicit
g:ale_lintersまたはb:ale_lintersで指定されたlinterのみを実行する。
g:ale_lint_delay
linterを実行する間隔を秒単位で指定する。
g:ale_completion_enabled
aleを読み込む前に設定しておくと、自動補完が有効化される。
asyncomplete.vimを使って自動補完する
aleはasyncomplete.vimをサポートしています
vimrc等で以下のように記述しておくと、LSPまたはtsserverを使用した自動補完が効きます
code:vim
autocmd User asyncomplete_setup call asyncomplete#register_source(asyncomplete#sources#ale#get_source_options({
\ 'priority': 10
\ }))
tips
.vueファイルに対してEslintを実行する
code:vim
let g:ale_linters_explicit = 1
let g:ale_linters = {
\ 'javascript': 'eslint',
\ 'vue': 'eslint'
\ }
ファイルを保存した時だけlinterを実行する
https://github.com/dense-analysis/ale/issues/333