vimでnodelintを有効化してQuickfixを活用する
Posted by hikaruworld : 2012 5月 3
最近触っていなかったnodeを触ろうと思って、vimの構成を少し弄っていました。
当時はjslintでやっていたvalidationを、nodelintでやってflymakeしよう思い
『Vimでnode.jsの文法チェック(nodelint編)』を参考に設定を調整してたんですが、
ちょっとハマッたのでメモしておきます。
なお、以下のバージョンで構築しています。
OS | MacOSX(SnowLeopard) |
---|---|
vim | MacOSX(SnowLeopard)デフォルトの7.2.108 |
errormarker.vim | Version 0.1.13 |
node | 0.7.8 |
nodelint | 0.6.1 |
errormarker.vimとnodelintの導入
とにかく、上記サイトに従ってerrormarker.vimとnodelintを導入します。
nodelintの設定まではここでは行いません(npm install -g nodelint
まで)。
なお自環境との違いは、homebrewではなくてnaveベースなことです。
nodelintの設定変更
自分の確認したnodelint 0.6.1では、–reporterという引数でnodelintの出力形式が指定できるようです。
以下のコマンドでデフォルトで提供される出力形式が確認できます。
nodelint --list-reporters
以下、出力結果です。
Build-in reporters: * default: Default reporter * idea: IDEA reporter * textmate_full: Textmate full HTML reporter * textmate_summary: Textmate full HTML reporter * vim: VIM syntastic reporter * xml: XML reporter
ご丁寧にvimの出力形式が準備されているのでありがたく使わせて頂きましょう。
ただ、ちょっとだけ出力形式が見づらいので修正します。
実際のvim用のreporterファイルは以下にあります。
$NODE_PATH/../node_modules/nodelint/lib/reporters/vim.js
変更内容は以下です。半角スペース入れて、文字列を一部切り詰めます。
41c41 < str += file + 'line ' + error.line + --- > str += file + ' line ' + error.line + 43c43 < ' Error: ' + error.reason + ' ' + --- > ' E: ' + error.reason + ' ' +
errormarkerの設定
基本的には参考サイトの通りですが、–reportersの設定を追加する事とerrorformatの設定を変更します。
あと、自分の場合は、$HOME/.vim/bundle/errormarker/ftplugin/javascript/flyquickfixmake.vimになります。
setlocal makeprg=$NODE_PATH/../../bin/nodelint\ --config\ $NODE_PATH/../node_modules/nodelint/config.js\ --reporter\ $NODE_PATH/../node_modules/nodelint/lib/reporters/vim.js\ % " main.js line 2 column 1 E: ...... setlocal errorformat=%f\ line\ %l\ column\ %c\ %t:\ %m if !exists("g:javascript_flyquickfixmake") let g:javascript_flyquickfixmake = 1 au BufWritePost *.js silent make endif
いくつか補足をば。
* makeprgの指定に関しては、naveを利用している都合上都度変更されるため、$NODE_PATHを基点に定義しています。
* –reporterに関しては既に記述した通りです。
* config.jsはインストール時のまま特に弄っていません(参考サイト通りに変更していません)。
* errorformatは–reporter vim.jsの出力形式にあわせています。
* make処理は一々表示して欲しくないのでsilentにしています。
.vimrcの設定
一部.vimrcの設定も変更しました。
" 保存時にerrormaker.vimでCUIの画面がぶれるので、いったん再描画する autocmd QuickfixCmdPost make redraw! " quickfixに対象が存在した場合に自動起動する用に設定 autocmd QuickfixCmdPost make if len(getqflist()) != 0 | copen | endif " quickfixに対象が存在しなかった場合に自動で閉じるように設定 autocmd QuickfixCmdPost make if len(getqflist()) == 0 | cclose | endif
以上です。
参考にしたサイト
それマキ(それ今mackeeがやってるよ)
vimdoc-jar quickfix
おまけ
そういえば、:signが有効になんないんですよね。
E319: Sorry, the command is not available in this version
とか言って怒られますorz…
コメントを残す