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環境で適当なサンドボックスは必ずつくって作業している
    • Macの場合 pyflakes-vimプラグインを有効にして、pip install pyflakes している
    • Ubuntuの場合 pyflakes-vim プラグインは無効にして sudo apt-get install pyflakes している

とりあえずこれでヘンなエラーは出ていない。

まあそんな感じで

Syntax Checkくらい自動でやってくれないとおじさんビールも飲めないよ、まったく。っていうような心境になりました。JSHintもPyflakesも便利だね。すごいね。

*1:正確には前にブクマしてたのを発掘した