JSのSyntaxまわりのvim環境を整える(ついでにPythonも)
CoffeeScriptは好きです
だけど結局JavaScriptで書かなきゃいけないことも多いだろうし、せっかくなのでJSのSyntax関係を整えようと思った。
まずは処理系が必要です
もっぱらNodeに頼ってるので(というかNodeの開発しようとしてるし)Nodeをインストールする。
Node環境を整えてCoffeeScript+lessをvim vim しちゃうメモ - AtAsAtAmAtArA
まあnvmしてるだけです
JSLintかJSHintか
JSでSyntaxを解釈してやるにはJSLintが有名だけど、どうもJSLintはJavaScript Good Partsに偏り過ぎててちょっとキツすぎるらしい。設定ファイルでどうにかできるらしいけど、もうちょっと制限がゆるいらしいJSHintを導入することにした。
いろいろ探してたらこれの記事をだいたい参照することになった。*1
vim で JavaScript の syntax check をする - すぱぶろ
Syntasticっていうvimのプラグインを入れる。
NeoBundle 'git://github.com/scrooloose/syntastic.git'
こいつはいろいろSyntaxのもろもろを取り扱うらしい。で、別途処理に必要な場合は追加してやるといい、みたいな。詳しくはよくわからい。
で、記事の中にもあるけどJSHintを入れる
API Only - Stack Exchange
npm install -g jshint
で、記事中にもあるけど、いちおう .jshintrc ファイルを $HOME/.jshintrc として配置することにした。
dotfiles/jshintrc at master · oryband/dotfiles · GitHub
ただしMacだと .jshintrc を設置するとなぜかかえって JSHint がかからなくなる?なんか動作しなくなった気配。よくわからない。とりあえず、デフォルトのJSHintでしばらくはやってみると思う。
やったーSyntaxチェックできたよー
些細な ; わすれとか var とか 連想配列での , とかの処理を自動で検出してくれる。このくらいやってもらわないと正直もうおじさんキツい身体になってしまったよ……。
ついでにJSONのSyntaxもいれてみる
npm install -g jsonlint
で、たしかに入るし実際起動するとLintがかかってつかえるんだけど、Vimとの連携がうまくいかない。Syntastic.vim的にはjsonlintもカバーしてるんだけど、なんでかな……うまくいかなかった。
Syntastic が使用するコマンド - Heavens hell
なので、JSON.vimでお茶をにごすことにした
NeoBundle 'JSON.vim' au! BufRead,BufNewFile *.json set filetype=json
ついでにPythonもSyntax Checkしたくなった
Pythonの場合はこんな感じの比較らしい
vimでPythonのコードを書いているときにflymake?っぽい感じをだす | hexacosa.net
無理にPEP8に完全に従うつもりもないし、とりあえずSyntaxだけカバーしてほしかったのでPyflakesをいれることにした
pip install pyflakes
で、vimのプラグインとしてもあるみたいだしいちおういれてみた
Vim と Pyflakes - Heavens hell
NeoBundle 'git://github.com/kevinw/pyflakes-vim.git'
ただ、Ubuntu環境だとなんだかpyflakes-vimとPyflakesが競合するのかなんなのかエラーが大発生する。それにそもそも pyflakes-vim 自体いれなくても構文チェックしてくれるっぽい。謎。よくわからない。とりあえず、Pyflakes自体はいい感じなので継続する。
追記
なんでpyflakes-vimがやたらエラー出すかと思ったら、pyflakesをグローバルにインストールしてたからだ。通常開発はvirtualenv環境でやるから、その中で pip install pyflakes すればそれなりの path が通ってくれるのか、エラーが出なくなったし、いい感じになった
さらに追記
この記事ではどういう環境かは触れられていないけれど、Macだと pyflakes は brew にないのでてきとうに virtualenv でつくったサンドボックスで pip install pyflakes して .vimrc でも pyflakes-vim をいれている。これでエラーは起きていない。で、Ubuntuの場合 apt パッケージに pyflakes があるのでそっちでいれて、pipではいれていない。そしてpyflakes-vim も無効化している。これはおそらくpyflakesが2つ競合するようなかたちになってエラーが起こるのかな?試しにUbuntuでvirtualenv に pyflakesをいれて apt の pyflakes を消してみたけど、そしたら起動時にうっとおしいエラーがでるなぁ。
というわけで現在の結論としては
- virtualenv環境で適当なサンドボックスは必ずつくって作業している
とりあえずこれでヘンなエラーは出ていない。
まあそんな感じで
Syntax Checkくらい自動でやってくれないとおじさんビールも飲めないよ、まったく。っていうような心境になりました。JSHintもPyflakesも便利だね。すごいね。
*1:正確には前にブクマしてたのを発掘した