textobj-sigilを書いた

成果物

https://github.com/vimtaku/vim-textobj-sigil

つまり何?

my $name = $sample_aref->{'member'}->{'name'};
                 ^ here is cursor
"となっているときに yagとすると
my $name = $sample_aref->{'member'}->{'name'};
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           this range is selected.
"該当部分がyankされる!

my ($first) = @list[qw/hoge fuga/];
                    ^ here is cursor
"となっているときにyagすると
my ($first) = @list[qw/hoge fuga/];
              ~~~~~~~~~~~~~~~~~~~~
              this range is selected.
"該当部分がyankされる!

my ($first) = @list[qw/hoge fuga/];
                 ^ here is cursor
"となっているときにyigすると
my ($first) = @list[qw/hoge fuga/];
              ~~~~~
              this range is selected.
"該当部分がyankされる!

vim-textobj-userが必要。

背景
1.
Perlを書いていると $hoge, $fugaはもちろん
$hoge->{'fuga'}や、@list{qw/hoge fuga/}なんてのがよく出てくる。
%hoge{'hgoe'}や&some_methodなんてのも出てくる。
これらをテキストオブジェクトで扱えたら便利ではないかということで
つくってみた。

実際今普通にみんなこれをyankとかするときはBとかでSigilまでもどって行って
yt,とかytとかするのだろうか。

2.
先日2011/6/24にvim教に入信(vim教は心の中に存り)したので、
信仰度を上げていかなけr(ry


つまったこと・わからなかったこと
vim歴は長いくせにvimscript初心者なので
何から何までわからなかった。調べながらでめちゃくちゃ時間がかかった。
カーソルの下の文字列を取得するのが調べてもなかなか出てこなくて
let l = getline('.')
let c = l[col('.')]
まぁ help に書いてあるんだけどとにかく時間がかかったりした。

基本的にはthincaさんのvim-textobj-betweenとvim-textobj-comment
パクって参考にして作った。

わからなかったのは
"{{{1, "{{{2とかたまに書いてあるんだけどあれは何なんだろう。
やさしいvimmerの方々なら教えてくださるに違いない。

あと
set whichwrap=h,l
これなんで設定して戻してるんだろうか。

ヘルプもthincaさんのやつを参考にして作った。
最高に適当な英語を炸裂させながら。
helpの書き方とかテンプレートとかあるのだろうか。

所感
バグとか余裕でありそうです。すみません。
それhogehogeでできるよ、が怖くて仕方ないれす^q^

参考資料
Vimスクリプト基礎文法最速マスター
http://d.hatena.ne.jp/thinca/20100201/1265009821
vimdoc-ja functions
http://sites.google.com/site/vimdocja/usr_41-html
textobj-between
https://github.com/thinca/vim-textobj-between
textobj-user
http://www.vim.org/scripts/script.php?script_id=2100