読者です 読者をやめる 読者になる 読者になる

エンジニアをリングする

プログラをミングしたり。

my web site twitter

TokyoVimに行ってきた!

4/12に、TokyoVim#18に参加してきました!

vim関係のイベント参加は初めてだったのでどきどきでした。

私のvim歴はというと、1ヶ月満たないぐらいです・・。。
先月ぐらいからメインエディタをvimに切り替えて、最近やっと操作に慣れてきたところです。

そんな初心者がなぜTokyoVimという玄人の集い(たぶん)に参加しようと思ったのかというとですね。。

vimの前はSublime Textを使っていたのですが、Sublime TextにはhayakuというCSS入力補助プラグインがあります。プロパティと値を「適当に省略して入力」してTabを押すと、よしなに展開してくれるのです。
たとえば float:left; と入力したいときは fl<Tab>でOKです。
他にも、
ml10<Tab> → margin-left: 10px;
w100p → width:100%;
pa<Tab> → position: absolite;
bs<Tab> → -webkit-box-shadow: #FFF;
       box-shadow: #FFF;
・・・とまあなんとも便利なのです。

ただこのプラグインが今のところSublime限定っぽいんですよね。
vim版探したけどないみたいです。
(ないの意外だったのですが、CSSガリガリ書く系の人とvimガリガリ使う系の人の層が重ならないのかも。。。)

でもCSS書くときめっちゃ便利だし、せっかくGithubでソース公開されてるし、Pythonだし(vimでもPython使えるみたいだからコアのコード動かせるかも?)などなどで、、、
vimでも使えるようにhayaku-vim作りたい・・・!!

という個人的な野望があり、加えてTokyoVimは各自もくもく作業形式のようだったので、ちょっとvimプラグイン化に向けてソース読んだりいじったりできればと参戦してきました。
初心者の私にとってはかなり高い山なので、ベテランVimmerの方々にアドバイス貰えたらいいなと思いつつ。

開始の13時になって軽く自己紹介&やること発表のときに私が前述の旨を発言したところ、「それならzen-coding(現emmet)のvimプラグインが参考になるのでは」と助言いただき emmet-vimのソースhayakuのソースをもくもく読んだりプラグイン入門記事のサンプルを写経して動かしたりしてました。
VimScriptは.vimrcで多少馴染みがあったのでemmet-vimのほうはずっと見てたらうっすらわかってきたのですが、hayakuのほうがSublimeプラグイン用の記述もPythonもマトモに読んだことないので辛かった。。。

そのあと手動かしたくなり、初めてまともに書くVImScriptと格闘してたらあっという間に15時になって、進捗報告タイムでした。

で、おもむろに取り出されるプロジェクター。。
順番に映しだされる進捗。。。

私進捗だめです!!って感じだったのですが、せっかくなのでと後押ししてもらい初プロジェクターデビューしました。(画面繋げるの初だったのですが、今までいろんなとこでLT見ながらミラーリングの手順だけは何度も脳内シミュレーションしてたのでスムーズにできたw)
かなーり緊張しましたが、なんとか報告できました。緊張しててなんて言ったか覚えてない。。
アドバイスもらえたのも嬉しかったですが、加えてプロジェクターで皆さんの画面が見られたのがとても楽しかったです。使い慣れてる方の操作感とか画面構成とかカラースキームとか見たいなーと思っていたので。
進捗の内容も、自作言語のシンタックスハイライトの実装とか、曜日ごとに自動でカラースキーム変えるとか、Dockerのインスタンス一覧表示とか、vimでThrees実装とか、面白かったです。

で、そのあとまた18時までもくもく。
TokyoVimで印象的だったのが、作業中はとにかく静か。まさに「もくもく」って感じでした。
もくもく会ハッカソンとかはあんまり参加経験ないのですが、もくもく会の中でもかなりもくもくしている感じの現場でした。

私ももくもくして、ちょっとずつ慣れてきて「これどうやるんだ?」みたいなのがだんだん増えてきたので、隣の席のid:thincaさん(thincaさんお隣だった!vim-quickrun使ってます!!)にいろいろ教えてもらいました!
「この動作はどう実現するのがいいか」とか「これがなぜ動かないのか」とかって一人で手探りで調べるとだいぶ時間かかるのですが、よく知っている方に質問できると、すぐに的確な答えをもらえて、すごい!!はやい!!なるほど!!!
詰まったところ教えてもらいつつ、なんとか入力中にTabで展開するhayakuの操作感をちょっと模倣することができたり(Tab押されたときの行に空白文字以外の文字があればテスト用の固定文字列に置換して、なければ普通にTabを入力)。
一人だったら、絶対ここまで進みませんでした。。。来てよかったと思いました。

問題は、入力された曖昧な文字から一番近いプロパティを導き出す部分です。
お話しを聞く限り、私が思っていたより難しそう。。
hayakuのソース見てみたところ、入力文字列と展開後の文字列の対応付けを全部羅列してあるわけじゃなく正規表現とかで解析して一番近いものを出してるっぽく見えました。(たぶん。)
vimでその曖昧入力をどう実現するか?ということが話題になり、thincaさんがemmet-vimのmattnさんに聞いてくださいました。私、横でビビる。。

おおっ!!(ありがとうございますありがとうございます)
Fuzzyってこれのことでしょうか。
FuzzyFinder

You will be happy when: 

        "./AhLongLongLongLongLongFile.txt" 
        "./AhLongLongLongLongLongName.txt" 
        "./OhLongLongLongLongLongFile.txt" 
        "./OhLongLongLongLongLongName.txt" <- you want :O 

Type "ON" and "OhLongLongLongLongLongName.txt" will be selected. :D

"ON"から"OhLongLongLongLongLongName.txt"が選択されました!曖昧検索!
abc*a*b*c*または*abc*として検索しているようです。なるほど。
あとはよく使うプロパティの重み付けとかをすればできるのだろうか!

だいぶ戦闘力足りてないですが、いただいたアドバイス参考にしつつhayakuの実装を解読したりしてちょっとずつ進められたらいいなあと思います。
VImScript楽しいです。動いた時テンション上がります。

お世話になった方々ありがとうございました。
かなり集中して作業できたのでまた参加して進めたい!