vicmdモードにバインドしたいとしましょうR。redo
これはうまくいきます。
bindkey -a r redo
このように置き換えると動作しません。
bindkey -a rr redo
成功せずにいろいろ試してみました。これは不可能ですか? emacsモードでは、キーストロークにシーケンスをバインドすることが可能である必要があることを知っていますが、viモードで文字に対して同じことを実行できますか?
答え1
Rすでに標準のvicmdモードにバインドされていますvi-replace-chars
。
Rしたがって、+ Rto redo
withを定義すると
bindkey -a rr redo
R押すと、Zshは2つの可能な操作を実行できます。
- コマンドとして解釈する
vi-replace-chars
か - 2番目の文字を待ってからコマンドを解釈してください。
redo
Zshのキーボードコマンドを一致させるアルゴリズムは短いコマンドを好むので、常に1.タスクを使用します。
RZshがこれを実行するのをやめるには、まず次のようにバインディングを削除する必要があります。
bindkey -a -r r
次に、新しいオプションを追加します。
bindkey -a rr redo
vi-replace-chars
その後、追加することもできます。
bindkey -a re vi-replace-chars