VimM#2にいってきました


9/6(土) 秋葉原で開催された VimM#2 に参加してきました。
ちょっとレポートを書くのが遅れに遅れてしまったので><
VimM#2参加のみなさま(特に発表者のみなさま)、申し訳ないです..


第一部 プラグインを使おう編

プラグインって何? おいしいの? by id:ka-nacht


まず、Vim神こと id:ka-nachtさんによる、Vimプラグインの導入的な発表でした。

Vimプラグインには 3種類あるよ
  • global plugin (vim全体で有効な機能を提供)
  • filetype plugin (filetype別の機能を提供、バッファローカル)
  • compiler plugin (QuickFixで利用される)
Vimプラグインは、ヘルプファイル、プラグインファイルで構成し、以下の配置。
~/.vim/doc/{plugin}.txt
~/.vim/plugin/{plugin}.vim

~/.vim は runtimepathの通ったディレクトリに適宜、読みかえよう

ヘルプファイルを配置したら、ヘルプタグファイルを更新しよう
:helptags ~/.vim/doc

これで、プラグインヘルプが :help を使って呼び出せるようになる。

プラグインの使い方の紹介

プラグインの使い方 4種類について、サンプルを交えて紹介がありました。


netrw.vimは標準でついてくるのですが、私は :e. のようにして
ファイルブラウザ的な使い方をしていたのですが
http, ftp, scpなど多彩なプロトコル対応をしているので
もっと使っていきたいと思いました。
特に scpの利用価値が高いと思い、

:edit scp://[user@]domain/dir/file

という感じで LAN内 PCのファイルを編集したりしてみています。


surrond.vim は、文字列を囲む括弧、(ダブル|シングル)クォート、HTMLタグを
手早く(追加|置換|除去)などを可能にするプラグインです。
ds, cs, ys, vsのコマンドを使いますが、若干、数が多いのですが
脊髄反射できるようになると、とても便利だろうなと思っています。


Software Design 2008年7月号id:taku-oさんの記事や
id:secondlifeさんのエントリーを参考に、now トレーニング中です。
narrow.vim, smartchr.vimはこれから順次、試してみたいです。

プラグインの探し方

http://www.vim.org をみましょう、Ratingをつけよう、ということでした。
Life Changingを連打したいものです。
また、http://www.lingr.com/room/vim-users.jp を訪れるとよいよ、ということです。


はじめてのコンパイラプラグイン by id:maedana


3種類ある Vimプラグインのひとつ、compiler pluginについての発表でした。
特定のテキストのコンパイルサイクルを効率おくまわすめに、
Compilerを使うためのオプション設定をするプラグイン、ということです。


具体的には :compiler コマンドによって、:makeprg と errformatを一括で設定し
:makeコマンド一発でコンパイル作業を始める、といったことを可能にするようです。
RSpecをつかったデモをおこなっていました。


Vim上から打ち込んでいたコマンドは

:compiler rspec
:make %

といったものです。
また、エラーが発生したときには :cn で次のエラーに、:cp で前のエラーに飛んだり
:clist でエラーリストを得たり、ということが可能で
シェルに戻らずに Vim環境でコンパイル → エラー修正 のサイクルを手早くまわせていました。


また、QuickFixについてもお話がありました。
vimrcファイルで grepprgオプションを

set grepprg=internal

と設定しておけば :grepが :vimgrepと同様に動作
するようになり、たとえば

:grep hoge ./*.txt

でカレントディレクトリのすべての .txt拡張子をもつファイルから
hoge という語を含む箇所を一覧表示してくれます。

:copen

でマッチした箇所の一覧が得られて、見たい場所に飛ぶことができます。


私は普段は QuickFixは使っているのですが、Compiler Pluginは使っていませんでした。
Compiler Pluginはとても便利だと思ったので、Compiler Plugin使いになれるよう
ヘルプを読んで消化中です。
usr_30.txt を読むべし、ということです。


How to Rails.vim by @ukstudio


Ruby on Railsの開発を Vimで完結させてしまおう、という感じで
Rails.vimプラグインについてのお話でした。
id:maedanaさん発表の Compiler Pluginのように
ほとんどシェルに戻らなくてもよくなるようです。


これらコマンド群が用意されています。

:Rails
:Rscript
:Rake
:Rserver
:Rlog

私は Ruby on Railsは、ほんのちょっと試してみたことがある程度なのですが
次に取り組むフェーズがきたら、Rails.vimは使ってみたいと思いました。

project.vim by @yoshuki


プロジェクト管理用プラグイン、ということで project.vimのお話でした。
このプラグインを使うと、Vimを :vsplitした状態になって
分割した左側にファイルツリーが表示されるようになります。
プロジェクトの中のどのファイルを編集しているのか、わかりやすくなる、とのことです。


project.vimでは、以下の操作ができるそうです。

  1. ツリーにディレクトリを登録
  2. ファイルを開く
  3. ツリー情報を更新する
  4. 複数ファイルを同時に開く
  5. ツリーのファイルを grepする

今は私は大きなプロジェクトはかかえていないのですが
今後、巨大なプロジェクトにぶち当たって、足元がおぼつかなくなったときには
project.vimで助けられるかもしれません。


あと、yoshukiさん、http://vimpi.net/ の運営をされている方だと知り、驚きました。
6月に Vimpiのユーザ登録していたのですが、あまり活用できてなかったので><
これを機に、活用を始めてみました。


というわけで、VimM#2の中で出てきたプラグイン(発表の中以外でも言葉が飛び交ったもの)はすべて
ウォッチし始めました。
http://vimpi.net/user/kei_os

All About Metarw by ujihisa (@ujm)


前回、VimM#1で Skypeから発表していた ujihisaさん、今回は生発表でした。


まずは前回の復習ということで

などのお話があり、さらに


と開発環境へのこだわりの話が続き、面白かったです。
FP, EP消費面で VimEmacsや、その他 IDEより優れている、ということでした。


そして、Metarw(めたりらと読む)についてのお話。
id:ka-nachtさんが開発した Metarw (Meta Read Write)という
「ファイルでないものをあたかもファイルのように扱うプラグインを書くためのライブラリ」

の話がありました。

あと、gitのリポジトリをファイルのように扱う metarw-git のデモ動画。


metarw-gitを使えば、たとえば以下のように
gitのリポジトリをファイルのように操作できるということです。

:edit git:master:src/ui.c


gitも metarwも使ってなかったのですが、この発表を聞いて
metarwと gitは絶対使えるようになろう、と思って、使い始めました。
あと FP節約のためにキーマッピングも見直し。



第二部 プラグインを作ろう編

君にも書けるVimプラグイン by id:ka-nacht


プラグインを書くときに大事なのはドキュメントを書くこと、ということで
その理由をこのように話していました。

  • これから何を書くかが明確になる
  • :help で調べられる


ヘルプファイルは、一行目に

 *plugin-name*  summary

を書くこと。


あと、リンク要素の書き方。

 *link*
 |link|


Hello, Worldを題材にして、プラグインを書くときのルールから
関数定義、Exコマンド、キーマッピング、autocmdをそれぞれ定義していく流れでした。
まとまった時間、手を動かして確かめながらできたのがよかったと思います。
手を動かすのが一番。


それから、プラグインとは直接関係ないけれど
ヘルプドキュメントと Vimと gitの組み合わせに、いたく感銘を受けました。
Vimのヘルプドキュメントの書式は、Vimを使いながら思考を整理していく上で大変よいなぁ、と。
あと gitの手軽な感じがよいな、と。
この 3つの組み合わせ、これからの自分のスタイルに取り入れていこうと決意しました。


On Metarw by ujihisa (@ujm)


Metarwを使って Nowaのブログエントリーを編集していく、というデモがありました。
Vimはシェル環境ですね。
あと、mixiにも素早く対応ww
きのこる。

第三部 Vim神による vimrc晒し(?)


神の vimrc解説。
たくさんある、というより「濃い」という感じか。
筋肉質な感じがしましたw

懇親会、などなど

カイシャの中だけで生きていたら会うことのできない人たちと
あーだこーだと盛り上がれる楽しさ。
やはり Vimの懐は深いです。
VimM#2も #1に続き Life Changingなものになりました。
サブイベントのランチ会で、神と同じ釜のメシ (イタリアン)も食えましたし。
発表者の皆様、会場の手配をしてくださった星さんなど、ありがとうございましたー!


あと、今回レポートを書くのが遅れてしまったのは、ちょっと反省です。
「学んだことを血肉に変えるまでレポートを書いてはいけない」と
自らに縛りを課してみたのですが、この縛りがアダとなってしまった感があります。。
やはり人生においても低レイテンシは重要。早く書いておくべきでした。
次こそ。