Vimには、基本的に2種類のコマンドがあり、挿入モードにすることができます。
、、、など、何かを追加するだけのコマンドi(バックスペースの使用は別として)。または、次のようなテキストも削除します:、、、。IaAc[motion]Csv[motions]s
イベントをフックしたいのInsertLeaveですが、私のコードでは、それがどのタイプの変更であったかを知る必要があります(のような挿入i、またはのような変更cw)。それを見つける方法はありますか?
Vimには、基本的に2種類のコマンドがあり、挿入モードにすることができます。
、、、など、何かを追加するだけのコマンドi(バックスペースの使用は別として)。または、次のようなテキストも削除します:、、、。IaAc[motion]Csv[motions]s
イベントをフックしたいのInsertLeaveですが、私のコードでは、それがどのタイプの変更であったかを知る必要があります(のような挿入i、またはのような変更cw)。それを見つける方法はありますか?
i<BS><BS><BS>bar挿入または変更としてカウントされますか?後者の場合は:undo、で変更しInsertLeave、影響を受ける行を保存して(つまり'[,']):redo、、、両方のセットを比較できます。「テキストが多い」場合は挿入、それ以外の場合は変更です。
利用できる可能性のある違いが1つあります。変更コマンドはすべてレジスタを変更しますが(ブラックホールレジスタが先頭に明示的に指定されていない限り"_)、挿入は変更しません(を除いて".)。
前にデフォルトレジスタの「スナップショット」を取り(CursorMoved,CursorHoldコンボなどで)、の内容を比較すると、InsertLeave見つけることができます。