momonga.vim#4に参加しました

6/7(土)に東京某所で開催されたmomonga.vim#4に参加したので、感想レポートをば

もくもく会

もくもく会では作り途中だったVim pluginの作成を進めました。

Vim pluginの作成

作成を進めたVim pluginについて、下記で説明します。

Vimには検索パターン内で使用可能な特殊文字を変更するためのmagicという 設定があり、この設定によってエスケープが必要な特殊文字が変わります。

例えば以下の様な感じです。

" hogeかhige(eは任意の繰り返し)だけの行にマッチするパターン

" magicだと
/\m^\(hoge\|hige*\)$

" very magicだと
/\v^(hoge|hige*)$

" nomagicだと
/\M^\(hoge\|hige\*\)$

" very nomagicだと
/\V\^\(hoge\|hige\*\)\$

それぞれ微妙にエスケープしている文字が違うのがわかると思います。 ちなみに先頭に\m,\v,\M,\Vがありますが、これらはそれ以降のパターンが それぞれmagic,very magic,nomagic,very nomagicで処理される という意味になります。

これら4つのパターンを相互変換するためのVim pluginを作成していました。

まだ完成していないのであれですが、例えばこんな感じで使えるようになる予定です。

" \m^\(hoge\|hige*\)$が出力される
echo magicalize#magicalize('\v^(hoge|hige*)$')

operatorも用意する予定なのでコード中のパターンも簡単に変換できるようになるはずです。

ちなみにmagicalizeというのはmagic化するという造語です。 英語圏の方には通じない気がしています。 Vim plugin名も、vim-magicalizeにしようと思っています。

magicについて詳しく知りたい方は、:help magicや、私が以前書いた以下の記事もご参照ください。

Vimでパターン検索するなら知っておいたほうがいいこと

テストが大体通ってきたので、ドキュメントを書いたらそのうちgithubにあげようと思います。

雑多な感想

  • 初めてmomongaさんの本体にお会いしたのですが、本当にももんがで、まさかのぬいぐるみでした。

  • momonga.vim会場のドアの前を女性が行ったり来たりしていたり、 一度はあまりに興奮した女性ファンが会場に乱入したりしていました (Vimの女性への人気の高さが伺えます。会場を間違えたふりをしていましたがただの照れ隠しだと思います)。

  • 「進捗どうですか?」という名のまさかりが飛び交っていてVimmer怖かったです。

  • Lindanさんに何のVim plugin作ってるんですか?と聞かれ、説明したのですが、 口頭で説明しているとき、なんで私はこんなものを作り始めたんだろうと 疑問に思ったけど答えは出ませんでした。 多分そこにネタがあったから作り始めたんだと思います。

  • 作成中のVim pluginが思いのほか正規表現がカオスな事になっており、 既にメンテ出来る気がしません。。。 使う予定もないのでとっとと仕上げて、次のVim pluginネタに着手したいです。

終わりに

お昼をご一緒したかったけど寝坊したり、カラオケには参加できなかったりで 残念な部分もありましたが、色々な方と交流出来て良かったです。

主催のsupermomongaさん、thincaさん、参加者の皆さん、ありがとうございました。

また、momonga.vimもしくはxxx.vimでお会いしましょう。

Happy Vim Life!