momonga.vim #6でinside-motion.vimを作った

momonga.vim #6に参加してきた。

vimを本格的に使うようになってから2年足らずだけれど、Vim Scriptはちゃんと書いたことがなかったので、よい機会だと思ってもくもくすることにした。

そもそも基本文法からほぼ分からない状態だったので、Vimスクリプト基礎文法最速マスター - 永遠に未完成や、「実践Vim」を読んでみた感想と Vim script 初心者講座 | MBA-HACKなどを読みながら1時間くらい。なんとなく分かったところで何を作ろうか考えて、あまり効率よくできていない移動周りをよしなにしてくれるモーションプラグインを書こうと思った。

HTMLタグだったり関数呼び出しの引数部分だったりキーだったり、とかく中身だけ編集したいというシーンが結構多いのだけれど、fとかで毎回先頭文字を指定して移動するのがいけてないと思っていたので、そういう内側に一気に飛んでくれるためのプラグインが欲しかったのだった。(↓完成したスクリーンショット

image

image

camelcasemotionのソースを中心にいろいろプラグインとかドキュメントを読んで書き始める。

NeoBundleでローカル環境のプラグインを読み込むにはどうすればよいのか悩んだけれど、NeoBundleLocalを使えばいける感じだったので、.vim/bundle下に直接ファイルを置いて開発することにした。

$ mkdir -p ~/.vim/bundle/inside-motion.vim && $_
$ mkdir plugin autoload
$ touch README.md
$ vim -c ':NeoBundleLocal ~/.vim/bundle' 

既存プラグインを参考に大枠はだいたいできたものの、正規表現エスケープがいつもの感覚と違うで変に時間を取られてしまった。検索するときは\vを使ってしまうけれど、プラグインでもカジュアルに使ってよいのか悩ましかったので、基本的には使わない方向でやろうと思った。他にはデフォルトのキーマップで迷ったり、一度githubにあげてインストールしてからローカルファイルを編集して反映されないとか悩んだりなどして時間が過ぎていった。

結局時間内にはすべて実装終えることができなかったので、日曜日のプリキュア観るつもりだった時間に残った作業をしてgithubにあげた。

castor4bit/inside-motion.vim

Vim Scriptの書き方少し分かった気がするし、一応今回の目的は達成したような感じがする。 あとは、暗黒美夢王のライブが聴けたのはとてもよかった。4曲ってWake Up, Girlsよりも持ち歌が多い。