2011年12月15日木曜日

kaoriyaさんvim(Win)にjslint.vimいれてみる。の巻


Jsやってて腹立つのはリテラルとかでの末尾カンマ。

先日突っ走ってつくってIEで動かんぞボケー。
って自分ツッコミ入れたばかりですが。

いい加減そろそろ慣れてきたのでちまちまとIEで怒られてないか
確認しながらの作業ですが、それでも乗りに乗ってぶわーって
作っちゃったあとでこの問題が出ると


もうIEなんてXXXXXXXXXXXXだよ!!。。。


という気分になります。まぁまだそーんなに大きな
IEハザードには遭遇してないのが救いですが。。

ですのでここは一発JSLintを使ってみることにしました。
Webじゃないよ。もちろんvimですよ。


さーググッてさっくりいれるー。


・・・・

(そんなに世の中甘くなかった。。。。。)
つーか予想以上に苦戦したぞ。これ。
完全に力不足。vimスクリプト勉強しないとなぁ。。
備忘録として残しておく。

以下、時系列。


======

ぐぐったよ。
ソッコー見つかりましたよ!
イイネ。



======

runtimeをhomeと考えてうわがけばいいんでしょ??
(私はkaoriyaさんのを利用させてもらっていますので)

======

うまくいかなかった。
一瞬エラーが出ているのがわかる。。。すぐに消えちゃうよ。。。
瞬間を狙ってAlt+PrtScでとってみた。
何度か失敗してキレました。短気はよくないです。

とうぜんググりますた。
「:messsage」というコマンドに出会いましたひとつ勉強になりました。
救われました。
ここで備忘録に残すと決心しました。



さて本題ですよ。
どうしようか。。。。

そりゃあ、もちろんもうソースを見るのが早いですよね。
jslint.vimをvimでひらきますよ。


「/invoke」と。


ほれみつかった。156行目だ。
もう一つ勉強になったのが「echoerr」でエラー出力できるってこと。
つまりこれで引数をダンプしまくりゃ勝ちですよ。

さて。
154行目のsysytemコールしている引数を覗いてみる。
要はコマンドと読み込んだJS渡してるんだよな。たぶん。
これパスの半スペ(Program△Files)とか問題なんじゃないのか?



ここまで来れば同志はいるはず。ということで再度ググります。
このググりが下手っぴだったので苦戦しました。

http://robrobbins.info/?p=245

ここに答えがありました!!!



59行目から82行目まで(Windows用のコマンド生成部分)
を書き換えます。



で、再度確認。
おし。ちゃんとダブルクォートでくくられている。と。



でダンプコード削除して。
めでたく、エラーコードが出力されなくなりました!!!!

まてまて。。。
そうじゃない。目的はちゃんとLintが働いていることを確認しないと。。
検証設定は_jslintrcとかで調整できるらしいけど、
リテラル末尾の検知が今回の目的だからね。


。。。。。



うんともすんともイイませぬ。
しょんぼりですよ。しょんぼり。


しょんぼりして
またjslint.vimに戻る。
b:jslint_outputをダンプしてみる。



ちゃんとjslintは働いてて、エラーメッセージも返してくれている。
いいぞ!働いてるってことは確認できた。
あとは表示系の問題。


ということであとは表示ロジックへの判定文を見ると。。。
正規表現でパースしてる。


ん?この正規表現、さっき出力してた「ふようなコンマだよー」っていうメッセージ、マッチするか?
最後のアルファベットのあとのコロンおかしくないか?
ということで他にもルールがあるのかもしれんのでひとまず最後のコロンだけを
外すことにしました。



多分これででるだろ。。



でたーーー。

ということで終わり。
合ってるだろ。多分、、、。ひとまずこれで。




■まとめるよ。
0:jslintをDLしてきて配置します。
1:パスの設定を変更します。59行目から82行目付近まで。書き換え過ぎないようにね。
2:正規表現を変更します。最後のコロン。



Macいいなぁ。。。
あと、vimスクリプト?でいいのかな。勉強してみたくなった。
おしまい。
疲れた。


======
明日会社の環境にセッティングしてみよ。

2011年12月12日月曜日

vim勉強中です


仕事でプログラムを書くようになり、
vim(gVim)を常用するようになって少し慣れてきたので
振り返りを。

で、初心者なりにどうやって慣れていったのかを
書いて見ようと思います。と、その都度アドバイスを
くれた方々に感謝だよ。


1:インストールしてみる

http://www.kaoriya.net/software/vim
からダウンロードして入れました。



2:設定をどうしたら良いか戸惑う。

・_vimrcのベース:@ispernさんの_vimrc

デフォルトで起動した際に、はて、何をどうしたら良いものか。
これからプログラム書くうえで使ってゆくつもりなんだけどわけわかんない。。。
と戸惑いましたが、過去の勉強会でneocompletecacheを紹介して
くれた@ispernさんがgithubで公開してくれていたので
それをひとまずベースにしました。それをベースに使用していない
部分等の削除や追加を行いながら勉強中です。
きっかけをくれてありがとう!!そういやぁ会ってないなぁー。


・フォント:osaka

会社入って近くにマカーなかたが多く、
macvim奇麗!と言ってるんですが、それよりも何よりも
そのフォントに憧れて最初はmigmix1Mフォントを適用して
使ってました。でも、@asano_yukiさんがosakaつかえまっせ。
って教えてくれたんでosakaに乗り換えました。ほら、気分はMacだよ。
設定自体は_gvimrcに記述しました。

・全角スペース可視化

全角スペース可視化できないの?って聞かれ
あ、そうですねぇ。って。
設定自体は_gvimrcに記述しました。


・ファイル保存時の行末削除

コードレビュしてて、指摘されたときにググったら見つけました。
これはかなり重宝しました。
設定自体は_vimrcに記述しました。
コード元はどこからだかを失念してしまいました。。。


・あとはキーバインド色々

使いながら色々と修正していってます。
まだ、設定の仕方自体怪しさ満点で勉強しながらですが、
まずはvimrcを普通に設定できるようになりたいものです。。



3:neocompletecacheを入れる。

・入れてみた。コレがないと多分もうだめだと思う。
 ただ、まだ設定とか含めて使いこなせていない。


4:操作に戸惑った。

・環境をvim練習用にする
hjklの操作がやはり最初に戸惑いますた。コレばかりはもう仕方ないので
何をする時でもvimを使用するように心がけました。

メインブラウザがchromeなのでvimmium入れたりしてできるだけ
環境をvimに縛るようにしました。

vimmiumはfを押してキーでクリック操作などができるのが良いです。
使いこなせていませんが。

だいなファイラのキーバインドもhjklにわりあて
Ctrl+l、Ctrl+hでウィンドウの切り替えをさせるようにシました。
hは上位、lはデフォルト(フォルダであれば下位へ)設定にしてみました。


壁紙をチートシート(vim-background.png)にしました。
で、
gui
set transparency=220
としてvimを透過させてカンニングしながらキー操作の勉強をしています。
最近はなれたのであまり見なくなってきたので成長したと思います。


5:スニペットに追加してみる

・snippetsを編集してみた。
PHPという未知なる言語との遭遇だったから勉強がてら
vimの訓練もしてみた。その時にphpunitのメソッド群をマニュアルから
加工してsnippetsに追加してみた。

あと、javascriptのsnippetsにextjs4向けのスタートアップ時の
スニペットを追加中。


6:NERDTreeを入れてみる

・@kotsutsumiさんや@asano_yukiさんが使ってて、あ、いいなぁと
おもったので入れました。
で、上記だいなファイラの設定だとeで編集(vim)が起動するんだけど
NERDTreeだと新しいペインにTreeが展開されちゃうので
キーバインドをNERDTree.vimを書き換えて使わせてもらっています。

7:このあと、、

・テクニックバイブルに掲載されているいろいろを少しづつ試して
行こうとおもうけど、、、多分しばらくはこのままだと思う。



慣れ始めたばかりだけど苦痛ではなくなったし、
vimをもっと上手に使いたいという向上心のほうが
大きい。継続的な勉強は必要ですね。



※あと、、、
ExcelをVimキーバインドにシてくれるアドインを
@martini3ozさんから教えてもらいました。
Vimxlsと言います。

これ、アドインインストール後、Ctrl+Mで起動/終了。
起動後に?を入力することでキーバインドマップが参照できます。

やはり行コピー(yy)列コピーが(yc)サクッとできること、
移動がhjklでできることが大きいです。
ほかにも罫線がmやcで引けたり、zで囲えたり、、、
と、使ってとてもお気に入りのアドインです。


※あと、設定ファイルとかまだまだ作成メンテ中ですが
githubに上げてみました。
https://github.com/froggugugugu