粘贴在自定义小部件中删除的文本仅适用于最后一个单词,可以修复吗?

粘贴在自定义小部件中删除的文本仅适用于最后一个单词,可以修复吗?

我正在使用来自的答案这个问题这样当我分别按Ctrl+WAlt+时可以剪切更长/更短的文本部分Backspace。具体来说,我有这个来.zshrc添加Alt+Backspace行为(Ctrl+W是内置的)

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

这对于删除文本效果很好,但粘贴后却无法按预期工作。假设我有这样的文字:

A quick brown fox

如果我按Ctrl+W四次然后按Ctrl+ Y,整个文本将被剪切然后粘贴回来。但如果我有这样的文字:

a-quick-brown-fox

我按Alt+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

相关内容