ぼちぼち散歩

Vimperatorでarpeggio.jsを作り始めてみた

kanaさんが作ったarpeggio.vimがすごかったので,Vimperatorでも同じことができないかと思ってやってみた.

とりあえず作り始めてみたものはGitHubのarpeggio.jsに置いてあるけど,まだいろいろと未完成.分かっている問題としては,以下のような感じ.

  • 2.0preでしか動作確認していない
  • .vimperaotrrcで設定を書くためにsource "~/.vimperator/plugin/arpeggio.vim" とか書かないといけない
  • :Arpeggioなんとか系のコマンドがちゃんと実装できてない
  • unmap系の動作がない
  • noremapがちゃんと設定できていない
  • もともとあったマッピングを上書きしてしまう(組み込みのマッピングは大丈夫)
  • マッピングできるキーとできないキーがある

特に最後の問題は,Vimperatorのキーマッピングにタイムアウトが(多分)ないことが原因.例えば,

map a hoge
map ab fuga

と,設定してあった場合,Vimの場合は,aと入力されたのち一定時間内にbの入力があればfugaが実行され,なければhogeが実行されるという風になってて,arpeggio.vimはそのタイムアウト時間を巧みに制御することによって同時押しの認識を実現している(という理解であっているはず).それに対して,Vimperatorの場合は,aと入力されたときabというマッピングが存在するとaの段階ではコマンドは実行されず,次にbが入力されればfugaが,b以外なら何もしないという動作になっている.

一方で,今のarpeggio.jsの実装はarpeggioに参加するキー全てを新たにマッピングし,そのマッピングで残りの入力を一瞬待って,その一瞬のうちに残りの入力があった場合に,同時押しがあったと判断する.したがって,zなどをarpeggioに参加させようとしても,もともとzzなどと2キーにマッピングされているため,z単体にarpeggio用マッピングを割り振っても今のところ実行されることはない.

そのほか,Vimperatorにautoloadがないとか,そもそも自分があんまりよくわかっていなかったりという理由で,実装できていない機能がたくさんある.

時間があればもう少しがんばってみる予定.

スポンサーサイト

2008/11/12 03:47 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

トップページへ