textarea/input 要素を vim っぽくする拡張

変更点(0.2a)

ちょっとバージョンアップ!

  • テキストボックスにフォーカスした時にステータスバーへの情報表示を行うようにした
  • コマンドの履歴を取るようにした(↑,<C-p>,↓,<C-n>で履歴を辿れる)
  • コマンド名の補完機能を付けた(<Tab>)
  • :行番号で指定行の先頭へジャンプできるようにした
  • vimperator使用時にMapコマンド入力キーが表示されない問題を解消(set showcmd みたいな機能)

まだまだα版でバグも多いかと思うがとりあえず公開。つまりフィードバックよろしくってこと(ぉ

これは何か

Firefox拡張機能で通常のHTMLのtextareaやinputの操作をvim(h,j,k,lでカーソル移動できたりするアレ)っぽくするもの
vim好き以外にはお勧めしない :-P*1

現状や機能

  • 通常の矢印キーでカーソル移動など文字として現れないキーは今までどおりの挙動になる(はず)
  • まだまだ未実装なマップがある(C-d,C-uとか)
  • 初期段階ではINSERTモードから始まってますのでいきなり入力可能。
  • 論理行と物理行の扱いがまだまだ未実装部分があり、vimとはちょっと違う挙動*2
  • モードはNORMAL,INSERT,VISUAL,VISUAL(LINE)の4つ
  • マップコマンドはカウントも受け付ける
    • 2ddとか2dwとか
    • >,<のインデント、アンインデントもあり
  • コマンドは:s/RegExp/string/[gi],/RegExp,?RegExpが実装されている
  • yankやdeleteは本当のclipboardへのコピー/切り取り扱い。pによるペーストも同様にclipboardから
  • vimperatorとちょっと相性が悪い(特にESCを連打したとき)

将来的に

  • 未実装マップの実装
  • .vimrcのようなユーザでカスタマイズできるように
  • IMEの制御(できたら)*3
  • vimperatorにもきちんと対応(個人的に重要)

モードの状態を分かりやすくする(追記:2008/01/12 10:30)

本来ならINSERT時とそれ以外でカーソルの形状を変えられると良いのだけれど、現状できてない(できない?)ので暫定対策として以下のような対応が可能です。

ProfileDir/chrome/userContent.css
textarea[mode="normal"], textarea[mode="visual"], textarea[mode="visual_line"] {
  background-color: #ddd;
}

のような事をしておくと、NORMAL,VISUAL,VISUAL(LINE)のときtextarea要素の背景色が変わるので分かりやすくなるかと思います。

*1:vim好きでも覚悟が必要かも?

*2:折り返しの行があるときの挙動のこと

*3:NORMALモードになったらIMEを自動でOFFにする等