[Vim]エスケープシーケンスを含む vimshell バッファで表示通りにヤンクする

vimshell は、エスケープシーケンスを解釈し、 vimshell バッファ上で色付けして表示することができます。
以下は vimshell で git log --color を実行した図です。コミットのハッシュ番号が黄色になっています。

問題

これをそのままヤンクするとエスケープシーケンス文字もそのままヤンクされ、このようになってしまいます。

^[[33m4391e8e^[[m Implement new cache method.
^[[33m947fb43^[[m - Changed default cache lines in nofile buffer.
^[[33m3232f40^[[m Merge pull request #250 from ujihisa/master
^[[33mec342f3^[[m better english
^[[33m407608b^[[m - Improved FAQ.

vimshell は vim が conceal に対応している場合は conceal 機能でエスケープシーケンス文字を隠していますが、conceal はバッファの実際の文字を変えるわけではないため、ヤンクしたときにエスケープシーケンス文字も一緒に付いてきてしまいます。
これは不便ですね。表示されているものがそのままヤンクされるようになってほしいです。

解決方法

conceal された文字を取得する方法は vim に用意されています。 synconcealed 関数です。この関数は現在のバッファの行番号、桁位置を引数に取り、Conceal 可能リージョンの中にいるかどうかの情報を返します。
この関数を使えば、表示されている文字列を取得できます。これを使ってプラグインを作りました。

設定

プラグインGitHub - chikatoike/concealedyank.vim で公開しています。これを neobundle 等でインストールしてください。
このプラグイン(operator-concealedyank) をマッピングとして公開しています。例として、例えばこのように .vimrc に書きます。

xmap Y (operator-concealedyank)

以上の設定をすることで、 vimshell バッファでビジュアルモードで範囲選択し、Yを押すとエスケープシーケンスを除いた、表示されているままの文字列をヤンクできます。

補足

このプラグイン自体は、 vimshell のみを対象にしたものではなく、 conceal が使われているバッファすべてで機能します。conceal は、例えば :help のバッファで使われています。
また、 conceal は文字を消すだけではなく置き換えることもできますが、置き換えた後の文字列をヤンクできるはずです。(確認していません)
また、手抜きしたため、現在のところオペレーターとして動作しません。ビジュアルモードのみで機能します。例えば、 ノーマルモードで Yiw としても普通に yiw と同じようにヤンクします。これはいずれ直すかもしれません。