4

Vimには、基本的に2種類のコマンドがあり、挿入モードにすることができます。

、、、など、何かを追加するだけのコマンドi(バックスペースの使用は別として)。または、次のようなテキストも削除します:、、、。IaAc[motion]Csv[motions]s

イベントをフックしたいのInsertLeaveですが、私のコードでは、それがどのタイプの変更であったかを知る必要があります(のような挿入i、またはのような変更cw)。それを見つける方法はありますか?

4

2 に答える 2

1

i<BS><BS><BS>bar挿入または変更としてカウントされますか?後者の場合は:undo、で変更しInsertLeave、影響を受ける行を保存して(つまり'[,']:redo、、、両方のセットを比較できます。「テキストが多い」場合は挿入、それ以外の場合は変更です。

于 2013-01-08T12:02:11.530 に答える
0

利用できる可能性のある違いが1つあります。変更コマンドはすべてレジスタを変更しますが(ブラックホールレジスタが先頭に明示的に指定されていない限り"_)、挿入は変更しません(を除いて".)。

前にデフォルトレジスタの「スナップショット」を取り(CursorMoved,CursorHoldコンボなどで)、の内容を比較すると、InsertLeave見つけることができます。

于 2013-01-08T00:39:57.257 に答える