アンドゥした位置をハイライトする Vim プラグインを書きました

Atom text editor の Vim エミュレータ、 vim-mode-plus に関する発表 を見ました。以前からアイデアの宝庫だと感心していましたが、もはや単なるエミュレータの域を超えているように思います。

スライドを見ていて、アンドゥした位置がハイライトされているのが面白かったので早速パクりました。

vim-highlightedundo

シェルコマンド diff を使って変更を検出してハイライトします。 diff コマンドの出力は行単位なのですが、もうひと頑張りしています。正直しないほうが良かったかも、と後悔しています。コードを書くのは楽しかったんですけど。

vim-highlighteundo-demo-gif

正直、ちょっともっさりしていて常用には向かないかも。 どんな編集をしたかは Vim のアンドゥツリーに残っていないので必ずしもハイライト位置は編集位置と一致しません。これは今のところ Vim script に提供されているインターフェースではどうにもならないと思います。

最初は削除される文字列と挿入される文字列の両方をハイライトしてたんですけど、邪魔だなぁ、という感じだったので止めました。一応、試すことはまだできます。

let g:highlightedundo#highlight_mode = 2

何回アンドゥ・リドゥできるのかを取得するのが一番難しかったです。