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