web-dev-qa-db-ja.com

Z Shellviモードでの挿入アクションの開始を超える

バックスペースが文字を削除できるようにZシェルのviモードを構成することは可能ですか挿入アクションが開始された位置?

基本的に、~/.vimrcに次の行を追加することで実現できるvimの動作

set backspace=start

–これをZ Shell viモードにすることは可能ですか?

5
wolf-revo-cats

これをzsh構成に追加できます。

bindkey -M viins '^?' backward-delete-char
bindkey -M viins '^H' backward-delete-char

説明:

Vi-modeは、事前設定されたキーマップのセットです(viinsvicmdvioppvisual)特定のキーを特定のウィジェットにバインドします。これらのウィジェットの一部は、viエディターとほぼ同じように動作するように特別に設計されています。

あなたの場合、これはデフォルトでバインドされているvi-backward-delete-charウィジェットです。 Backspaceviinsモードでは、挿入モードに入った位置を超えて削除しないという特定の機能があります。

多くの場合、これらのウィジェットにはわずかに異なるバージョンが存在し、emacsエディターに沿って動作します。この場合、それはbackward-delete-charウィジェットになりますが、これは現在の挿入セッションに限定されません。デフォルトではemacs-modeにバインドされていますが、どのウィジェットをどのモードで使用できるかについての厳しい制限はありません。 vi-mode内でbackward-delete-charを使用するには、単に再バインドするだけです。 Backspace 代わりにウィジェットをbackward-delete-charと呼びます。

^?^Hの2つのバインディングがある理由は、これら2つのキーシーケンスのどちらを押すと送信されるかは端末に依存するためです。 Backspace。デフォルトでは、両方ともvi-modeemacs-modeの同じウィジェットにバインドされています。

8
Adaephon