我正在使用来自的答案这个问题这样当我分别按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