![粘贴在自定义小部件中删除的文本仅适用于最后一个单词,可以修复吗?](https://linux22.com/image/193344/%E7%B2%98%E8%B4%B4%E5%9C%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E5%B0%8F%E9%83%A8%E4%BB%B6%E4%B8%AD%E5%88%A0%E9%99%A4%E7%9A%84%E6%96%87%E6%9C%AC%E4%BB%85%E9%80%82%E7%94%A8%E4%BA%8E%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E5%8D%95%E8%AF%8D%EF%BC%8C%E5%8F%AF%E4%BB%A5%E4%BF%AE%E5%A4%8D%E5%90%97%EF%BC%9F.png)
我正在使用来自的答案这个问题这样当我分别按Ctrl+W或Alt+时可以剪切更长/更短的文本部分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