カスタムウィジェットから削除されたテキストを貼り付けることは、最後の単語でのみ機能します。この問題を修正できますか?

カスタムウィジェットから削除されたテキストを貼り付けることは、最後の単語でのみ機能します。この問題を修正できますか?

私はの答えを使用していますこの問題これにより、それぞれCtrl+Wまたは+を押したAltときにテキストのより長いまたは短い部分を切り取ることができますBackspace。具体的には+アクションを.zshrc追加するには、次のものが必要です。 (+は内蔵されています。)AltBackspaceCtrlW

backward-kill-dir () {
    local WORDCHARS=''
    zle backward-kill-word
}
zle -N backward-kill-dir
bindkey '^[^?' backward-kill-dir

これはテキストの削除には効果的ですが、貼り付けた後は期待どおりに機能しません。次のようなテキストがあるとしましょう。

A quick brown fox

Ctrl+を4回押してWからCtrl+を押すと、Yテキスト全体が切り捨てられ、再び貼り付けられます。しかし、次のようなテキストがある場合:

a-quick-brown-fox

Alt+を4回押してBackspaceからCtrl+を押すと、期待Yどおりにテキストが切り捨てられますが、貼り付けるだけです。

a-

後者に全文を貼り付けるにはどうすればよいですか?

答え1

組み込みの終了ウィジェットは、前のコマンドが終了動作ではない限り、内部クリップボードの以前の内容を置き換えます。以下を呼び出して、カスタムウィジェットが終了操作であることを示す必要があります。zle組み込みフラグを設定しますkill

backward-kill-dir () {
    local WORDCHARS=''
    zle backward-kill-word
    zle -f kill
}
zle -N backward-kill-dir
bindkey '^[^?' backward-kill-dir

関連情報