Vim の :substitute をプレビューするプラグインつくった

この記事は Vim Advent Calendar 2012 340日目の記事になります。
Vim Advent Calendar 2013 の募集も開始しました。
興味のある方はぜひご参加下さい。

  • 元ネタ:


※一部加工
http://lingr.com/room/vim/archives/2013/11/02#message-17257647

  • 参考

http://d.hatena.ne.jp/tarao/20130303/evil_intro#usage-vim
http://blog.supermomonga.com/articles/vim/taiwa.html
http://d.hatena.ne.jp/thinca/20131104/1383498883


上記のように Evil では :substitute 時に {pattern} と {string} をハイライトしてプレビューする事ができます。
これを Vim でやってみたかったんです。が、ぶっちゃけ完全に同じものをつくるのは無理でした。
なので、色々と制限付きではありますが、それっぽいものを作ってみました。

[プラグイン]

NeoBundle "osyo-manga/vim-over"

[使い方1:コマンドラインウィンドウを使用する]

コマンドラインウィンドウで :substitute を入力するとバッファの {pattern} がハイライトされます。
こちらを使用する場合、{string} のプレビューは行われませんが副作用は殆どなく、使い勝手もよいです。
https://f.cloud.github.com/assets/214488/1461854/922bd38c-44d1-11e3-9ca4-eb3902be19f7.gif

[使い方2::OverCommandLine]

:OverCommandLine を使用します。
これは over.vim 独自のコマンドラインになります。
このコマンドラインを使用すると {pattern} のハイライトと {string} のプレビューが行われます。
ただし、独自のコマンドラインなので以下のキーマッピングのみが使用できます。

キー 処理
コマンドの実行
コマンドラインから抜ける
レジスタ " の貼り付け
or 1文字削除

上記以外のキーマッピング(カーソルキーで移動など)は使用できません。
なのでコマンドラインウィンドウよりも使い勝手は悪いです。
https://f.cloud.github.com/assets/214488/1474353/83826f7e-462c-11e3-8836-90b03a4f10b6.gif


と、いう感じで無理やりですがやってみました。
まぁ実用性があるかと言われると微妙ですが…オサレだからいいよね。
ちなみにコマンドラインで InsertCharPre が使用できればだいたいの問題は解決します。
使いたい。

[追記]

プラグインをつくるにあたって LingrVim 部屋で :substitute をパースする正規表現をいろいろと考えていただきました。
教えて頂いた方々、ありがとうございました!