VimM#2に参加してきました

http://wiki.livedoor.jp/biowithit/d/VimM%232


参加者の皆さんお疲れ様でした!
今回も相変わらず多くの収穫を得ることができました。


VimM#2のテーマは「Vimプラグイン特集」でした。
各発表についてのメモや感想を以下にまとめておきます。


第一部

  • kana - プラグインって何?おいしいの?
  • maedana - 初めてのCompiler Plugin
  • ukstudio - Rails.vim
  • yoshuki - project.vim
  • ujihisa - All About Metarw

第二部

  • kana - Vimプラグインを作ってみる
  • ujihisa - On Metarw

kana - プラグインって何?おいしいの?

資料:http://whileimautomaton.net/2008/09/vimm2-use-plugins


Vimプラグインを使う上で知っておきたいことなど。
まだプラグインを使ったことがなかった私にとっては非常に参考になる内容でした。


Vimプラグインは大きく分けて3種類

global pluginVim全体で有効な機能を提供
通常プラグインといったらコレのこと
filetype pluginfiletype別の機能を提供する
emacsのmajor modeっぽい感じ
compiler pluginquickfixで利用
詳細はid:maedana氏に任せた!


Vimプラグインのファイルの基本構成

doc/{plugin}.txtプラグインのドキュメント(ヘルプ)
plugin/{plugin}.vimプラグイン本体
この他にもプラグインで提供されるファイルがある場合も。


Vimプラグインのインストール方法
1. :set runtimepath?でVimプラグインをインストールするディレクトリを確認し、各種ファイルをそこにコピーする。

例:runtimepathに~/.vimが含まれる場合

$ cp hoge.txt ~/.vim/plugin/hoge.txt
$ cp hoge.vim ~/.vim/plugin/hoge.vim

2. help tagsを更新する

:helptags ~/.vim/doc


プラグインを探すには

maedana - 初めてのCompiler Plugin

資料:http://d.hatena.ne.jp/maedana/20080906/1220681288

Compiler Pluginについて、HHKPを使いながら発表&デモ。笑
Vimで開発を行う上ではComplier PluginやQuickFixに明るくなっておいた方が幸せになれそう。


Compiler Plugin
特定のテキストのコンパイルサイクルを効率よく回すためにCompilerを使うためのオプションを設定するプラグイン


Compiler Pluginを使うと

  • シェル切り替え・行番号の確認の必要がない
  • エラー行にすぐに飛べる

QuickFix

  • :makeとか:grepとか
  • :h QuickFixCmdPreで調べよう
  • :grepが便利。検索結果の行にすぐに飛べる

ukstudio - Rails.vim

資料:http://www.slideshare.net/ukstudio/railsvim-presentation?src=embed


「Rails.vim」について。
うわあああああRailsわかんねえええええええ!!!!!
VimでRails開発するならRails.vimを使うと便利よ!ということは分かりましたですよ!


Rails.vimで使うコマンド一覧
(Railsやっている人ならコマンド名だけでどういう時に使うか想像がつくのかな?)

:Rails
:Rscript
:Rake
:Rserver
:Rlog

ウィンドウ関連の操作コマンド

:R, :RE, :RS, :RV, :RT
:A, :AE, :AS, :AV, :AT
  • R: Related File
  • A: Alternate File


さらにコマンド一覧

:Rmodel
:Rcontroller
:Rhelper
:Rview
:Runittest
:Rfunctionaltest


ABBREVIATION(略記)
例:pa[ と入力すると param[ に置き換わる
略記一覧を確認する方法

:Rabbrev

yoshuki - project.vim

資料:http://saikyoline.jp/weblog/2008/09/vimm2.html


まず始めにVimpiの紹介。
http://vimpi.net/


次に本題としてVimプラグイン「project.vim」の紹介。
Vimのウィンドウの左にファイルのツリーを表示するプラグイン。
Windowsのエクスプローラのツリー表示みたいな感じでなかなか便利そう。


project.vimの操作方法
ツリーを表示

:Project

ツリーにディレクトリを登録

\C(recursive) or \c

ツリー情報を更新する

\R(recursive) or \r

カーソルを移動してEnterでファイルを開く
複数ファイルを同時に開く

\s or \S(recursive)

ツリーのファイルをgrepする

\G(recursive) or \g

終了

:q or :qa

表示が崩れた場合はCtrl-Lで再表示


詳しくはヘルプで

:h project-mapping

ujihisa - All About Metarw

資料:http://ujihisa.nowa.jp/entry/cab6a24a6a


余談と「Metarw」について。
ujihisa氏らしい発表でした。
Metarwを使えばどんな編集もVimでできてしまいそう。


前回(VimM#1)のお話

  • オレポータビリティ(デフォルトの環境に近い方が道の環境で対応しやすい)
  • 小指の長さ(長い人はemacs向き、短い人はVim向き)
  • quickrun.vim
  • git-support.vim
  • Vim四天王と神
  • エディタはキーバインディングが9割
  • GUIはフォントが9割
  • FP:指の体力(emacsなんかは小指が大変だよね)
  • EP:目の体力

Metarw(Meta Read Write; めたりら)について

kanaさんによる「ファイルでないものをファイルであるかのように扱うプラグイン」を書くためのライブラリ
:e, :wの挙動を上書きする


metarw-gitではこんな感じで編集可能

:e git:master:src/ui.c

kana - Vimプラグインを作ってみる

資料:http://whileimautomaton.net/2008/09/vimm2-write-a-plugin


練習としてVimプラグインを作ってみよう!というお話。
ここではHello, worldを表示させるだけのプラグインを作りました。
メモにまとめきれなかったので、上のリンクからkanaさんのスライドを見て下さい。


Hello, world用のプラグインを作るには以下のファイルを作成すればOK

  • doc/hello.txt
  • plugin/hello.vim


プラグインを作るときはドキュメント(ヘルプ)を書く

  • 何を作るか明確になる
  • :helpで読める
  • kana氏によるdocのテンプレート

http://github.com/kana/config/tree/sket%2Fvim-skeleton/vim/dot.vim/doc/skeleton.txt


自分で入れたプラグイン一覧は以下のコマンドで確認できる

:h local-additions


hello.vimを作ってみよう!

Vim起動時にウィンドウの下方にHello, Vimと表示されるプラグイン(~/.vim/plugin/hello.vim)

echo 'Hello, Vim!'

これだけ。


プラグインを書き換えたときの再読み込み

:source ~/.vim/plugin/hello.vim


注意:諸事情により書いた方がいい命令文

if exists('g:loaded_hello') " 諸事情により云々
  finish
endif
let g:loaded_hello = 1

let s:cpoptions = &cpoptions  " Viとの互換性で云々
set cpoptions&vim

(プラグインの内容をここに書く)

let &cpoptions = s:cpoptions


関数の定義

function! Hello(obj)
	echo 'Hello, ' a:obj
endfunction

関数の呼び出し

:call Hello('hoge')


Exコマンドの定義

command! Hello  call Hello()

Exコマンドで引数をとる場合

command! -nargs=+ Hello  call Hello(<q-args>)

:引数の文字列リテラル


他にも

  • Key mappingsの定義
  • autocmdの定義
  • グループで定義を隔離

などなど。

ujihisa - On Metarw

資料:http://ujihisa.nowa.jp/entry/cab6a24a6a


余談と「Metarw」を使ったプラグインの紹介。


いきなり余談(笑)

  • ITpro Challenge! 2008でLTしてきた
  • あさひ美容外科(笑)
  • 高まるVim熱(笑)


Metarw-Nowaの紹介
ブログサービスNowaのエントリをまるでファイルのように扱う


Metarw-Mixi
出会い系サービスmixiの日記をまるでファイ(ry

その他

beatinaniwa IIDX

午前中にkanaさんとbeatinaniwaと私の三人で集まり、ゲーセンでbeatmania IIDXをプレイしました。
beatinaniaにとっては初のbeatmania IIDXプレイでした。きゃっほう!
IIDXプレイヤーのkanaさんと私はオリジナルコースをプレイしたり仲良くSP七段に挑戦して落ちたりしました。


Hashthon

VimM#2の懇親会後にkanaさんとid:draftcodeと私でHash邸に押しかけ、夜通しで語り合ってVimの知識を深めたり深めなかったりしました。
寝床を提供してくれたid:Hash++
ustもしていましたがあれは放送してはいけな(ry

こんな感じでした

というわけで、皆さんお疲れ様でした。
次のVimM#3でもお会いしましょう。


それと、

あと、VimMのMはみみのMらしいです。VimM#2はmickey24がうさみみをつけて主催するそうです。期待。

UK STUDIO - VimM#2でRails.vimについて話してきました

やりませんのでどうぞご安心下さい。