implementing range symbols #3

word
クォートされた文字列については終わったので、次に word、つまり iskeyword オプションに格納されている正規表現にマッチする文字で選択する機能。vim では、これもやはり search.c で処理している。current_word() である。これは特に記すこともなく実装した。

ひとつだけ特記しておくとするならば、aw と iw の違いだろうか。単語に付随する空白の扱いと言い換えてもいい。


foobar
^

^ の場所にカーソルがある状態で yaw すると、ヤンクされるのは [cci]” foobar”[/cci] だ。一方、yiw すると [cci]” “[/cci]、すなわち空白だけ。

これは、前者はともかくとして、後者はどうなんだ。空白は word なのか? いやー空白は単語ではないだろう……ということで、wasavi では vim とは違い、この場合 “foobar” がヤンクされる。

また、

foobar foobaz
^

の場合は、aw は [cci]”foobar “[/cci]、iw は [cci]”foobar”[/cci] が選択される。これは vim も wasavi も共通。

block
( ~ ) とか { ~ }、あるいは [ ~ ] の中身を選択する。これはもしかしたらいちばん簡単かもしれない。これらの中身との境界を認識する処理は、% コマンドを呼び出すだけだ。つまり処理のほとんどはすでに出来てあるのだ。というわけで、特に問題なく実装。

ただ、vim では { ~ } の場合だけインデント周りで特別な処理をしているのだけど、それが必要な意味がいまいち読み取れなかったので、実装していない。

sentence、paragraph
とここまではそんなに難しくない。難しいのは残りのセンテンスとパラグラフ単位の選択なのである。

気力が続けば続く。

Leave a Reply

Your email address will not be published. Required fields are marked *