こんにちは
ゴリラ.vimを運営しているゴリラです。
Vimでコーディング中に帰りの電車時間を知りたくなる時があるので、プラグイン作りました。
このプラグインを入れればブラウザを開くことなく乗り換えルートを検索できます。便利です。
何ができる?
導入
https://github.com/skanehira/train.vim
READMEを参照して下さい。
使い方
乗り換え
:TrainSearchRoute 出発駅 到着駅
電車遅延情報
:TrainLateInfo
仕組み
vital.vimというvimのライブラリのWeb.HTML
を使用してYahoo乗り換え案内のHTMLのパースをしています。
letl:url ='https://transit.yahoo.co.jp/search/result?flatlon=&fromgid=&from='..l:from ..'&tlatlon=&togid=&to='..l:to..'&viacode=&via=&viacode=&via=&viacode=&via=&type=1&ticket=ic&expkind=1&ws=3&s=0&al=1&shin=1&ex=1&hb=1&lb=1&sr=1&kw='..l:toletl:response =s:HTML.parseURL(l:url)" 以降パース処理for ul inl:response.findAll('ul')for li in ul.findAll('li')letdl= li.find('dl')if!empty(dl)let dd =dl.find('dd')if!empty(dd)let ul = dd.find('ul')...
電車遅延情報はAPIがあるので、Web.HTTP
を使用してJSONを取得し、vim組み込み関数のjson_decode()
でJSONをオブジェクトに変換してテーブルデータを作成しています。
letl:response =s:HTTP.get("https://rti-giken.jp/fhc/api/train_tetsudo/delay.json")ifl:response.status !=200
echohl ErrorMsg
echo 'status:'..l:response.status 'response:'..l:response.content
echohl None
returnendifletl:table =s:TABLE.new({ \'columns':[{},{},{}], \'header':['路線名','鉄道','更新時間'] \})letl:content = json_decode(l:response.content)...
vim scriptだけでHTTP通信を行うことはできないので、Webパッケージではcurl
or wget
or python
に依存しています。
大抵の環境はcurl使えると思うので、問題ないかと思います。
vital.vimはプラグインを作っていく上でかなり便利なライブラリです。自分も今回始めて使ってみました、割とすんなり使えました。
プラグインを作っていて使ったことが無い方はぜひ一度使ってみてください。便利すぎてやばいです。
最後に
Vimは良いぞ!