Vim scriptをsourceしてエラーがあればquickfixに表示する
Vim scriptを書くとする。
動作確認しようとして「:source %」(もしくはquickrun)をする。
構文エラーで怒られる。悲しい。
quickfixに表示する
エラー文を読んで行番号確認して{number}G打って移動してっていうのを繰り返すのが面倒になってきた。
なので、sourceして怒られたらquickfixに出力して該当箇所へのジャンプはそっちに任せることにする。
ついでにquickfixに表示する練習もしたかったので一石二鳥。
vimrcに以下を追加。
" 指定したVim scriptをsourceしてエラーをquickfixに表示 function! s:vim_lint(file) let messages = '' redir => messages silent! execute ':source ' . a:file redir END let errors = [] for l in split(messages, "\n") if l =~ '^行' let info = {'filename': a:file} let info.lnum = substitute(l, '行\s*\(\d*\):', '\1', '') elseif l =~ '^E' let info.text = l call add(errors, info) unlet info endif endfor call setqflist(errors, 'r') cwindow silent! doautocmd QuickFixCmdPost make endfunction command! -nargs=0 VimLint call s:vim_lint(expand('%:p')) nnoremap <Space>l :<C-u>VimLint<CR>
- サンプルコード
ぼくの環境ではerrormarker.vimを入れているので、実際はこうなる。
なお一般的なlintと違い、「実際に動かした結果」のエラーを解釈しているわけなので使う場合は気をつけること。