haya14busa

haya14busa’s memo

VimConf2014 で検索とその拡張について発表した

VimConf2014 にいってきました

2014/11/08(Sat)に開催された VimConf 2014 に参戦して「/-improved」という発表をしてきました

TL;DR

初めてVimConfで約80人の前でLTをしたり, 他の方のおもしろい発表を聞いたり, 懇親会などなどで Vimmer のみなさんとお話出来て感極まりました.

発表した

/-improved


Vimデフォルトの検索をもっと使いこなそう! という内容と, 最近開発している検索拡張プラグイン, haya14busa/incsearch.vim についての発表を行いました.

VimConf, 一応国際的なものを目指すという声があるような話をしていたと思うので拙いですが基本全編英語で書いてみました. (gifアニメーションがあるので英語壊れててもある程度わかると信じている.) また incsearch.vim の README にも リンク を貼ってみました (そのうちwikiとかに移動させるかもですが)

incsearch.vimについてはスライドを…と思いましたが, 英語がたぶんダメダメで(特に最初の2-3コの発表を聞いてからエクストリーム加筆修正した最後の部分), LT10分間に合わなくて最後駆け足で喋ったので少し. 詳しくはスライド or いづれ書かれるであろう(?) incsearch.vim の解説記事を参照していただきたいです.

Design

incsearch.vim の目指すデザインとしては基本的にシンプルな検索の拡張を提供し, Vim デフォルトの / を置き換えても違和感なく移行できるというところを1つの重要なポイントとしています. この @todesking さんのツイートはVimConfのコンテキストでつぶやかれたツイートではないのですがまさに「空気のように」に使えるよう目指していてスライドでも似たようなことをすこし話していました (あとこのツイートが本当に嬉しくてどこかに書いておきたかった. ありがとうございます)

後半話してたこと

この incsearch.vim というプラグインは決して自分だけの力で開発したわけでなく, いろんな人に協力があって作ることができました(という部分がエクストリーム加筆部分なので相当に雑なスライドになっている).

もとはosyo-manga/vim-overに使われていたカスタムコマンドラインを osyo-manga/vital-over というライブラリとしてをおしょーさんに要望投げまくって作ってもらったり, ドットリピートの対応法とかは Vimプラグイン読書会 などで教えてもらったり, 正規表現をderisさんに教えて頂いたり, 使っていただいた方に不具合を報告してもらったりアイデアをもらったり, 開発時にぶつかったVim本体のバグをvim-jp/issuesに報告して修正してもらったりと, たくさんの人に協力していただいてこそincsearch.vimはここまでできたと思ってます. みなさん本当に感謝しています. ありがとうございます!

kaoriyaさんの話にあった(kaoriyaさんのスライド参照) Vim のよさ, 「らしさ」の1つには確かに「Vim のユーザー」があると僕も思って, incsearch.vim はそのよさがなければ絶対に作れなかったプラグインの1つとして Vim のよさ としても話したいなーと思い, もともと開発のバックグラウンドの部分は入れてなかったのですが急遽スライドを追加して話させていただきました.

Vim のよさがより伝わるといいなーと思いましたが, そのせいで完全にLTの10分制限を越えてしまったので同時に反省もしています…

正直緊張しすぎで全然聴衆の方がどういうふうに聞いてくれてるか反応を見れてなかったのですが, twitter とかを見る限り便利さは伝わったようなので嬉しかったです. みなさん興味が出たらぜひ使ってみてください…!

それぞれの発表, あと感想とか

Identity of the Vim @kaoriya さん)

「Vimのらしさ」について. テキストオブジェクトが便利とかも勿論Vimの強みで「らしさ」の1つ. でも, それだけではなく Vimを使うならIDEとは違い複数の言語をやって視野を広げることができることも1つのメリット. これは逆に言えば多種多様なバックグラウンドを持つ人がVimを触っているということで, vim-jpLingrのvim部屋, twitterで他の Vimmer の方々達と交流すると Vim を通していろいろな考え方に触れることができ, Vim の強みの一つに「vim-jp = ユーザー」 というのは本当にそうだなと感じました.

またVimをやる意義として, 得たものを還元してvim本体をよくしたり, 思いがけず他の人にとっても便利にできたり, マッチポンプ式に Vim を便利にできるという点もとても共感しました. この辺の話や後のujihisaさんの発表を聞いていると変にテンションがあがってしまい, エクストリーム資料追加を実行しました. (そしてLTが時間内に間に合わなくなりました.)

PM2 (@ujm さん)

Process Manager 2 の話. 個人的には以前 cmigemo のプロセスを Process Manager で使いまわそうと現在のPMは使ってみたことがあるのですがうまくいかず断念していた(自分の使い方の問題っぽかった)という経緯あります. ですがPM2はかなり使いやすそうになっていそうだったので再挑戦したいと思いました.

後半全くVimと関係ない話(!?)だったり随所に挟まれる笑いどころがあって一番笑った発表でした. PM2だけでなく命名やタイムアウトの大事さも学べて「べんり」

f (@Linda_pp さん)

f の解説と f 拡張プラグインの解説でした. Lokaltog/vim-easymotion の便利機能も解説していただいてありがたみがありました. clever-f はfで繰り返して移動できるというそれ自体の機能の便利さも勿論メリットなのですが, ;, キーという押しやすい2つものマッピングをフリーにして他のマッピングにできるという部分がとても嬉しい機能です. Lindan さんの場合は ,<Leader> に, ;<Plug>(easymotion-s2)にしており, このあたりをどのマップに置き換えるかは人それぞれの好みだとは思うのですが, かなり便利そうだと感じました.

スライドのfの説明の図がわかりやすかったり, 最後にはオチも付いているのでぜひスライドを見てみてください

Hey, Java! Vim is coming. (@kamichidu さん)

Javaを書く機会がないですが, もしJavaを書くことになったら間違いなくVimで書きたい側の人間なので参考にしたい. Lingrなどでkamichiduさんの活動をみてると, 他の人ではすぐにはできないようなことを平然とサクッとこなしている印象がいつもあるのでぜひ見習っていきたい…!

auto closing parenthesis (@c0hama さん)

dot repeatable になっている cohama/lexima.vim の仕組みとか, あまり自動括弧入力系は使ったことがないのですが試してみたいという思いもあったので個人的に気になる発表の1つでした.

あとで懇親会やその後のカラオケなどなどで聞いた話によると,コマンドラインのマッピングなど想像以上にいろいろな機能を leximaでカスタマイズすることができるらしく汎用性の高さを感じたました. リピータブルな自動括弧入力ってだけでは全く無いようです. すごい.

怖くないマクロ入門 (@deris0126 さん)

:h q のマクロ入門についての発表. 決してマクロ漁船のようなコワイ話ではなく初心者から使える解説でよかったと思います. Vimを使っていて, そこに繰り返し操作があればマクロを使うチャンスなので使っていけるようになるとVimがもっと好きになること間違いなしです. 時間があれば実演とか, 途中でマクロ間違えた時や, マクロが少し間違っててた場合にちょっとだけ操作足したい/修正したいといった時にどうすればいいかといった対処法もあるとより便利さがあると思いました.

Test for Vim script (@thinca さん)

最近 thinca/vim-themis をベンリに使わせて頂いているんですが, 改めて発表を聞いてもベンリすぎる…という印象でした. themis便利なんですが自分が使いこなせてないのでテストもっとかけるようになって使いこなしたいという思いがあります.

Let’s talk about neovim ((@ShougoMatsu さん)

暗黒美夢王の NeoVim についての発表. 全編英語で書かれておりNeoVim newsletterにも載るらしくVimConfの国際感がでてよさそう. 内容についてもさすがShougoさんと言うべきかエディタの未来とかOSSのforkの話とかも含めてとても考えられているなぁと感じました.

NeoVim のissueを動向を追うの, かなり大変なので殆ど追えてないのですが面白いことをやっているハズなのでもっと追っていきたい…

かなりすごい発表(かなり) (@supermomonga さん)

かなりすごくておもしろい発表でした(かなり). supermomonga/thingspast.vim は統一的に使うようになるととても便利(とても)になりそうなので使ってみたい. Vim, しゃべれるらしいのでVimと会話したい(とても)

XVim with MacVim and smartgrep (@pebble8888 さん)

とても申し訳ないんですがXcodeつかったことがなく, 自分の発表の直前だったので緊張していたこともあってあまりまともに話を聴けてなかった…悔やまれる… 単なる紹介とかでなくforkして改善したとかいう話をしていた気もするのでお話聞いてみればよかった. コメントを飛ばしてgrepできる, smartgrep も便利そう.

/-improved (@haya14busa)

自分の発表, 上述した.

vim script初心者に使ってもらいたい、転ばぬ先の杖「Vint」 (@orga_chem さん)

個人的には今後の発展が期待できる & 使いたいプラグイン No.1 でした. スライドはオシャレでみやすいし, lint の仕組みも詳しく解説されていて勉強にもなりました. lint, 奥が深い…!

@orga_chem さんは発表者であると同時に会場の設営やUstream, 録画などの管理も行なって頂いており, 本当にお疲れ様でした. あと Vim の壁紙を使わせて頂いており改めて感謝できてよかった.

Jenkins + vimenv で 最新のVimを使おう! (@raa0121 さん)

vimenv, anyenvに入って欲しい. git の log からパッチ番号取得していつも最近のVimをbuildできる. make test とかも行なって不具合検知ができてよさそうでした.

懇親会, あとまとめとか

去年の VimConf 2013 では発表なんてもってのほかで, Twitter や Lingr でみていた Vimmer のみなさんとお話すること自体殆ど出来なくて, 楽しかったけど悔いは残るものになってしまっていました. しかし今年の VimConf 2014 では発表もできて, 皆さんとリアルで対面してお話することができてとても楽しかったです. 感極まりました.

来年も是非参加したいし, もっと運営のお手伝いとかもできたらなーと思いますj

当日これなかったり, Ustream の配信も見ていなかった方は Togetter に 当日のTwitterの様子をまとめた(VimConf2014まとめ - Togetterまとめ)ので, 発表者のスライドや他の方の感想記事, これから公式ページにリンクが貼られるであろう録画とかを見て, 興味がでたら是非是非来年のVimConfは参加してみると楽しいと思います!

それでは Happy Vim’ing ! ♥

Nagoya.vim 第2回に行ってきた

Nagoya.vimに参戦!

9/20(Sat)に開催された, Nagoya.vim #2 に京都から参戦しに行きました!

TL;DR

@thincaさんと @Linda_ppさんと一緒にスマブラできて楽しかった

Nagoya.vim #2

いわゆるもくもく回として久々(らしい)に開催された Nagoya.vim に初参加してきました。 connpassページにある目的を振り返ってみると

目的

Vim script でなんか書く なごやの Vim 使いと交流する

1. Vim script でなんか書く -> ○

incsearch.vim の進捗を出していました(進捗がでたとは言ってない).

主に内容としては TODO:, FIXME: がとっても増えたこと、テストをちょっとだけ拡充したことの2点です。 一応すでに実用段階にはあると思っているんですが、もう少しだけ足りない機能足して、テストちゃんとして早くバージョン1.0にしたさがあるのでまた頑張っておく予定です。

気になった方は是非使ってみてください…!

2. なごやの Vim 使いと交流する -> ○()しかし◎の余地あり)

東京勢の犬さん(@Linda_ppさん) と初対面出来たことを初めとして, TwitterやLingrのVim部屋, GitHubで見かける なごやの Vimmer の方々(Nagoya.vim #2 - Attendee List - connpass) と懇親会含めてお話できてとてもよかったです。 みなさんありがとうございました! またよろしくお願いします。

ただ、最初の自己紹介タイムだけでは自分の記憶力的にあまり覚えられなかったり、懇親会でもほとんど一緒に喋れなかった人がたくさんいたのでもうちょっと自分から話しかけて行きたい感が強まりました。 特にせっかく, なごやの関数型とか型界隈こわい勢 の方々がいらっしゃったのに、あんまり話さずじまいだったので、機会があれば関数型プログラミングとか教えてもらいたい(あわよくば)

ぜひ、又の機会によろしくお願いします.

反省, あと進捗とか

久々に時間取ってVim活できる機会だったので@thinca さんのライブコーディングを見ながらも上述したようなincsearch.vim の改善を行なって, 最後に成果発表させていただきましたがあまり目に見える進捗ではなかったという反省が1点。そのあとに実は以前….(ゴホッ…) 作った Vim系オンライン読書会 の宣伝LTみたいなものをしたのですが, 全くしゃべる内容とか準備せずにスライドだけ作ってグダッた発表したという反省が2点目。 そして極めつけは最後に撤収しないといけない時間に始めてしまってそもそも時間を押してしまったという反省の1点を合わせ, だいたい計3点くらいの反省がありました。皆さん申し訳ありませんでした。

ということで(?) 一応発表に使ったスライドを少々手直して上げてました。

オンラインVim系読書会でVim力を高めよう

Nagoya.vimに参加した人も, 参加してないけどこの記事を読んで頂いてる人も, ぜひぜひvimrc読書会やvimプラグイン読書会に参加してくれると嬉しいです。

特にvimヘルプ読書会やると絶対ベンリだと思っているのでプッシュしてくれるかたを常に募集しています。よろしくお願いします。

観光

翌日の21(日)は名古屋観光しながら進捗を出したりスマブラをやったり, グルメ楽しんだりしました

一緒に観光した @thincaさん, @Linda_ppさん, (@If_I_were_boxp さん, 名古屋観光一緒にできて楽しかったです, ありがとうございました…! またぜひよろしくお願いします.

ひつまぶし超ウマイ〜

vimrc読書会Stat作った

vimrc読書会Statを作りました!

vimrc読書会 Stat

参加者Stats: vimrc読書会 Stat - haya14busa

GitHub Contributionグラフのイミテーション

vimrc読書会2周年

先日の 2014/07/12(土) に開催された第106回 vimrc読書会ですが、 なんと 2012/07/10(火) に開催された第1回 vimrc読書会から数えて 2周年 の回でした。 めでたい!

と、まぁそういうめでたい節目(最近100回越えもあった)でもあり、vimrc読書会のアーカイブデータは現在データ化されていて利用しやすい形にもなっていたので、せっかくなのでd3.jsAngularJSで遊んでみました。

両方全く触ったことがなかったのでいろいろと改善したいところがそれはもうたくさんありますが、今までのデータの視覚化、ついでにこれからvimrc読書会に参加するのがチョット楽しくなるようなGitHubの草(Contributions graph)のイミテーションも作ったりして楽しかったです。

実装したStatについて

大きく分けると3つです。

1. vimrc読書会参加者数推移グラフ

Statページの一番上にどーんと参加者数推移のグラフを載せるようにしました。 ちょっと悪目立ちしてるレベルなくせにベースのLine Chartにちょっと機能を加えただけという代物です。 縦軸が参加人数、横軸が開催数になっていて、ドットにマウスオーバーすると情報が見えたり、クリックするとアーカイブページに飛べます。 (実は横幅が全部表示するにはギリギリで、あまりスケールしないようになっているのでそのうち改善できたらしたいです)

第2回が最高の27人参加だということが可視化されたり、最近の第105回で20人と結構な記録を出してるなーとわかったりしてちょっとおもしろい。 みんなでワイワイ参加して最高記録を塗りかえれるとアツイですね…!

d3に関しては、最初はbar chartでやろうと迷走していたりとグラフの選択とか結構難しかったけど、なかなかd3面白いなぁという印象を受けました。ただd3の知識はd3でしか生かせないようなつぶしが効かない印象も…? とはいっても,svg周りとかは汎用性高いし、視覚的に面白いものがつくれるのでd3やってみてよかったです。

2. vimrc読書会参加数ランキング

1vimrc読書会参加者数推移グラフの下に、ずらずらーっとこれまでの全vimrc読書会参加者の参加者数ランキングを出しています。 初期の頃からvimrc読書会を支えてきた/参加してきた上位陣が圧倒的で@thincaさんに至っては脅威の皆勤賞で堂々の1位です。すごすぎる…

現状、参加者名が3参加者ごとのStatページへのリンクになっているという関係上,参加者全員分を表示していますが、今後StatのTopページはサマリーだけだして、ランキングとか別のページに分けるという仕様に変更するかもしれません。

Angularに関してはここでは単にデータをDOMに結び付けてるだけです。ベーシックにng-repeatとか使ってみてデータバインディングの便利さを痛感しました。jQueryで頑張るとは何だったのか。

3. 参加者毎のStatページ

Angularのrouting機能を使って、参加者毎の統計ページを作ってみました。 単純なこれまでの参加数などに加えて、GitHubの草をリスペクトした Current streak, Longest streakの情報や, streakのグラフをd3で作ってみました。例によって、それぞれのマスにマウスオーバーで情報表示とクリックでアーカイブページに飛ぶようになってます。

あと、自分が参加してない過去の読書会とか振り返りたいという要望がきっとあるみたいな妄想から、参加/参加してない読書会ごとのアーカイブを表示させてます。

グラフが見るからに手抜きでしょぼい感が拭いきれてないのが明白なんですが、機能的には割とよさ気な感じになったかなぁと思います。 というか個人的にGitHubの草を生やしたり、何かしら記録して頑張った感を可視化できるのが好きなんです。肝心の中身はあとからついてくると信じてる

連続参加とか参加率が可視化されて、すこしでもvimrc読書会に参加したいなーという助けになればそれはとっても嬉しいですね。ぜひぜひ連続参加を目指してみてください。 一回「hi」と発言するだけでも参加扱いになるのでROM勢の方もぜひ発言してみてください。かくいう僕も最初はROMばっかりしてましたが、やっぱり会話できるとベンリです。

この辺も後々改善できればしていくと思います。一応右上の検索ボックスで他の参加者のページに飛べる(補完も効くはず)ようになってたりするのですが、もっといいUI絶対あるよね…

Jekyll on GitHub pages

Jekyll on GitHub pages と クライアントサイドMVなんちゃらで動的っぽいサイトがつくれて面白かったです。

Template

注意点としてテンプレートのシンボルがJekyllのLiquidと、AngularでかぶるのでAngular側でテンプレートのシンボルを変更しておく必要があります。 今回は角括弧でこのように使えるようにしてみました。[[ vimmutable ]]

1
2
3
4
5
var app = angular.module('myapp', []);
app.config([ '$interpolateProvider', function($interpolateProvider) {
    $interpolateProvider.startSymbol('[[').endSymbol(']]');
  }
]);

yamlデータをjsonでホスト

Jekyllは、特にGitHub Pagesなどのプラグインがない状態ではjsonのデータは基本つかえず、yamlでいろいろデータを書いておいて、そのデータを簡単に記事などに埋め込めるようになっているのですが、その性質をハックして無理やりjson形式に出力することができます。

やり方はjsonファイル作って、その先頭に空の Front-matter をおいて、あとはjsonをLiquid記法と交えてよしなに書いていくだけです。(自動化したい…)

Jekyllに検索機能を持たすという文脈で紹介されることが多いっぽいですが、yamlでデータをガンガンおいてる場合はjsonホストすると使いやすくなっておすすめです。

JSONデータ

アーカイブと、次回読むvimrcについてのjsonが上記URLで公開されているので使いたい方は使ってもいいと思います(たぶん)。 一応このJSONでhaya14busa/unite-reading-vimrcとか作ってみたりしました。

まとめ

d3もangularも初めてで未熟な部分が多々あったものの、割といいレスポンスをもらえて嬉しかったです…! Lingrのvim部屋!vimrc-stat {username} と打つと参加者統計ページへのリンクが返ってくるようになって便利。

最後になりましたが、宣伝です!!!

vimrc読書会は毎週土曜日23:00からLingrのVim部屋でオンラインでやっています。 参加すると、vim力がめちゃめちゃ上がるのでぜひぜひ参加して参加記録を伸ばしたりしましょう!お待ちしておりますよっ

Osaka.vim #1 に行ってきた

6/28(土)に開催されたOsaka.vim #1に行ってきました。 待ちに待った関西圏の Vim 勉強会!

関西圏のVim勉強会!

過去を遡るといくつか関西でのvim勉強会が開催されていたようなのですが、いづれも現在まで続いているものはなく、最近ではめっきりなくなっていました。 関東その他のVimの勉強会は結構な頻度で開催されており、しかもどれも楽しそう。 関西Emacsはあるのに関西Vimない!ナンデ!

他の地域でのVim勉強会を見るたびに羨ましさの涙でvimrcを濡らしていたところ、やっと機会が回ってきました。

2014/04/05

haya14busa: kansai.vim . “#x09” “ 関西Vim

manga_osyo: やると聞いて haya14busa.vim

vim-users.jp – Lingr

欲しいと思っている様子(口だけ)。そして時は流れて1ヶ月後

2014/05/17

iyuuya: 大阪でもxxx.vimって無いんですかね iyuuya.vimやってもいいんですけどねー

vim-users.jp – Lingr

やりたい!!!

やっと開催の流れが現実味を帯びてきました。というか@iyuuyaさんが現実味を帯びせてくれました。非常に便利。 一応、「一緒に開催しましょー」と@iyuuyaさんに言っていただいたのですが、ここから開催日を決めて開催場所を決め、告知etc… という流れまで 一緒に決め… @iyuuyaさんがほとんどすべてやってくれ、とうとうOsaka.vimの開催が決定しました!

1
2
3
for _ in range(100)
  @iyuuya++
endfor

@iyuuyaさん本当にありがとうございました & おつかれさまです。

Osaka.vim #1

待ちにまったOsaka.vim、 非常に楽しかったです。

@thinca さんによるライブコーディング

最初は @thinca によるライブコーディングでした。 個人的にスクリーンキャストとか実際に操作している画面を見るのはとても好きなのですが、ライブコーディングとして生でコード書いているのを見るのは初めてで、より面白かったです。

Vimから一切出ずに操作していたり、CursorHoldcursorline を設定するなどといった便利tipsが得られたりなど、 さすがthincaさんというべきか見ているだけでとてもおもしろかったのですが、周りの怖いVimmerたちがそこはこうじゃないか,などなど デバッグ手伝ったり、果ては Lingrのvim部屋 にいた Shougo さんにリアルタイムでuniteを修正をしてもらうなど、 これがソーシャルコーディングか…!と驚きの連続でした。

まさかの 1時間半 にも渡るライブコーディングでしたが見ていて飽きず、面白かったです。thincaさんお疲れ様でした。

フリータイム

もくもく回となるかと思いきや,思った以上に交流会でワイワイという感じで非常に面白かったです。 #進捗なんてなかった

vimのキーマップの話をしたり、vi過激派の設定を聞いて狂気を感じたり、何故かAtomしてる人がいたり、T-code という完全に人類には早すぎる入力メソッドの紹介などがあってとても楽しめました。

@itchynyitchyny/miv というコマンドベースのHaskell製Vimプラグインマネージャの話が面白くて、ここでも来てよかったなぁと思いました。

mivの存在は知っていたけど本当に知っていただけで全然試したこともなかったのですが、 聞いてみると興味をそそられました。 NeoBundleLazy は遅延ロード用の指定したコマンドなどを動的に設定しているけど、 いやそこは事前に生成できるし、そうすればもっと速くなるのでmivはそうしてるなどといった利点の説明や、 コマンドラインベースなのでシェルからプラグイン一覧を簡単に出したり、それぞれにgit gcしたりなどといった 使い方がとても良さそうでした。

ネックなところがあるとすれば個人的にはyamlにVim scriptを書くところがやはり気になるのですが、試してみたいと思いました。

既存のものに不満を持ちましょう

とitchynyさんが最後に締めくくったのが個人的には結構ささりました。 今のところNeoBundleLazyに不満がなかったとか言えない…

割と大きいプラグインになると少々不満を持ってもだいたい無意識のうちにデカくて改善するのも大変そう, そもそもそんな大きいプロジェクトを改善するプログラミング力足りてなさそう…などと考えて、振り返ればそうやって妥協してるところが多々あるなぁということを再確認しました。

ぼくの一番大きいVim活プロジェクトとしては、やっぱりEasyMotionになってしまうのですが、 この EasyMotionの開発を乗っ取った引き継いだという話は それこそ、それまでのEasyMotionに不満があって、より改善したい!という思いからゴリ押しで進めたところがあって、 周りのVimmerたちに助けを求めながらもある程度の成果を出すことができました。

そもそもの NeoBundle もおそらく PathogenBundleといった既存マネージャに満足できない、不満があったから NeoBundleが作られたのだと思います(当時の話は知りませんが)。

やはりこういう「不満」を持って、大きいプロジェクトでも妥協せずに取り組んで行くというのは、1つのあるべき姿だなぁと改めて感じました。

がんばりたい

発表した

そんなこんなで6時までのフリータイムだったのですが、残りだいたい30分。

「フリータイム…??きっと発表する人いるでしょ…? 用意出来てない…ヤバイ!!!」 と実は朝起きてから2-3時間使ってざっくりスライドを書いたり、前からあったらいいなぁと思っていた osyo-manga/vital-over を使った簡単なインクリメンタル検索の 拡張プラグインがサクッとプロトタイプが作れてライブコーディングするのにいいんじゃないかなーと考えていたのでした。

他のVimmerたちと話しているのが面白かったとか、他の進捗だそうと思っていたとか、 あんまり用意してないし別にやらなくてもいいかなーとかいろいろ思ってたのですが、 結局一番やろうとしなかった理由は勉強会で発表とか全くやったことないので日和ってたとかいう ダメダメな理由だったので、せっかくスライド作ったしエイヤーと発表しました。

が、完全に言い出す時間が遅くて時間足りなかった上、そもそも十分に用意できてないのでグダったところもありなかなかつらみがありました…

こういう勉強会って、別に全員がプラグイン書いてるような怖い方ばかりではなく、結構そのへんはやったことないよーという かたもたくさんいると思うので、そのあたりの層でこれからVimプラグイン作ってみたいって方向け(いると信じてる) に簡単なプラグインの構造と、僕がやってて便利だなぁーと思っていたデバッグの仕方を中心に発表しました。

反応はイマイチわからなかった()

その後にvital-overつかったインクリメンタル検索プラグインは、便利そう感はある程度伝わったような気がしたのですが、結局既存のものを見せるだけで終わった感がなきにしもあらず、ほんとにもっと早めに始めとけばよかったと反省しました… しかも、thincaさんが言っていたように、完全に作ってしまったものをそのまま書き直すのはライブコーディングっぽくもないので、簡単なプロトタイプにあえて留めて完成度もまだ低かったので出来ているものを見せてもそこまで大したものではなく輪をかけて反省でした。@各位 スイマセンでした

懇親会…そしてカラオケオールへ

その後、懇親会にいって美味しい料理を食べながらワイワイ話したりしてとても満足でした。 アルコール入ったままカラオケオールは終盤つらくて帰って爆睡しました。若さがたりない。

カラオケ中のvimrc 読書会が終了したあとサイトの更新で自動化できてなくて自分が更新ミスったこともあり、 初めて ruby さわってみて 次に読むvimrcを更新する簡単なスクリプトをrubyで書きました。

更新便利になって満足。

Vim部屋にも関わらず、rubyのインタラクティブシェルのことをlingrで聞いてpryを教えてもらったり、iyuuyaさんにanyenvつかってrbenvでrubyの環境管理するのを教えてもらったり、できたあとにvim部屋で何故かrubyスクリプトのレビューしてもらったりと、なかなかやっていて楽しかったです。教えてくださった各位ありがとうございました!

何気にOsaka.vimで出した目に見える進捗がこのスクリプトくらいでVim scriptは進捗ダメデシタ…

次回…?

きっと来月か再来月までにはOsaka.vim #2が開催されると思うのでぜひ#1に参加した人も、そうでない人も参加しましょう!

思った以上に京都の学生が多かったのでKyoto.vimもワンチャンあるんじゃないかとかも思うけどどうでしょうね(チラッ

Osaka.vim #1, とっても楽しかったです。お疲れ様でした!

:wq Osaka.vim_01

Vimプラグイン読書会第5回が4/12(土)21:00から開催されます

第5回 Vimプラグイン読書会

  • 日時: 2014/04/12 Sat 21:00 -
  • 場所: LingrのVim部屋
  • 読むプラグイン:
  • 目的: Vim scriptでリスト、文字列、辞書の効率的かつ汎用的な扱い方を学ぶ

!!!本日(4/12)の21:00から開催です!!! また宣伝記事が当日になってしまった…

初心者でも歓迎ですよ

昔開催されたvital.vim読書会では、Data.Stringを読んだらしいので、今回はData.ListData.Dictionaryのどちらか1つ,または両方を読むと思います。

読みどころ

vital.vimは主にvim-jpのVim script超詳しいマンのかっくいい方々が開発している Vim プラグインのためのライブラリです。これまでVimプラグイン読書会で読んだプラグインは何かしらVimの機能自体を拡張していたのに対し、vital.vimはあくまでもライブラリであり、Vim scriptによる汎用的かつ効率的なリストやディクショナリなどなどの操作の仕方を学べるので、「まだVim独自の仕様とかよくわからない…」という方にとっても読みやすくてよいかもしれません。Vim scriptまだ良くわからないという方も含め、ぜひぜひ気軽に参加してください!

また、vital.vimでなにが出来るのかも外から見ただけではイマイチよくわからなかったりするので、どういう関数が提供されていて、どういう仕様なのかなぁーとさらっと見ていくだけでも面白いんじゃないかと思います。

vitalの使い方サンプル

インストールした後適当なスクラッチバッファでQuickrunとかして動作確認しながら読むとよいかもしれない(かも)。vimrcに書いて自作vimrc関数で使ってもOKです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
NeoBundle 'vim-jp/vital.vim'

" vital.vimを単体で使う場合は`vital#of('vital')`
" プラグインに組み込む場合は引数の'vital'の代わりにプラグインの名前(Vitalize --name で指定した値)
let s:V = vital#of('vital')

" vitalのData.Listをimportする。
" 基本的に s:List.<utility_function>(arguments) という使い方をする
" :h vital-data-list.txt
let s:List = s:V.import('Data.List')

echo '= flatten =========='

" リストをフラットに
echo s:List.flatten([[1],[2,[3,4]]])
" -> [1,2,3,4]

echo '= push & pop ======='

" スタックスタック
let s = []
echo s:List.push(s, 1)
" [1]
echo s:List.push(s, 2)
" [1, 2]
echo s:List.push(s, 3)
" [1, 2, 3]
echo s
" [1, 2, 3]
echo s:List.pop(s)
" 3
echo s:List.pop(s)
" 2
echo s
" [1]

echo '= uniq ============='

" ユニークな値だけを残す。最近vim本体にも組み込まれたはずだけど仕様は異なる
echo s:List.uniq(['vim', 'emacs', 'vim', 'vim'])
" ['vim', 'emacs']

" 条件つけたりも
echo s:List.uniq_by(
\ ['vim', 'Vim', 'VIM', 'emacs', 'Emacs', 'EMACS', 'gVim', 'GVIM'],
\ 'tolower(v:val)')
" ['vim', 'emacs', 'gVim']

echo '= zip =============='

" Vim girlイラスト、zipでください
echo s:List.zip([1, 2, 3], [4, 5, 6])
" [[1, 4], [2, 5], [3, 6]]
echo s:List.zip([1, 2, 3], [4, 5, 6], [7, 8, 9])
" [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

" etc...

Vimプラグインに組み込む方法の詳しい日本語記事とか意外と無いし、アップデートはVitalize .だけでOKとかはhelpにも書いていないような気がするのでそのうち記事を誰かが書いてくれるはず。

僕はまだvital自体をそんなに使ってないですが、osyo-manga/vital-overというvitalの外部モジュール機能を使ったvim-overのライブラリを使わせてもらったりしてます。vitalとても便利なのでオススメです。

過去のVim Advent Calendar の vital に関する記事

適当にVACで検索しただけだったりする。OptionParserとか使ってみたいかも。

本日21:00開催のVimプラグイン読書会に参加しよう!!!

と、言うことでVimプラグイン読書会に参加してvitalを読んで実際に使ってみたり、バグとか改善点を見つけ本体にコントリビュッションしたりしましょう!初心者でも歓迎ですし質問すれば詳しい方が解説してくれるはずです。「hi」と発言して読んでることを宣言してもらえるだけでも少なくとも僕は喜びます。 人数少なすぎると読書会の存続自体が危うくなるのでhiだけでも便利

本日21:00から、LingrのVim部屋で開催です!ぜひ参加してください。