Zsh

在自定義小元件中粘貼文本僅適用於最後一個單詞,可以修復嗎?

  • July 21, 2021

我正在使用這個問題的答案,以便在分別按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-

我怎樣才能讓後者也粘貼整個文本?

內置的 kill 小元件會替換內部剪貼板的先前內容,除非先前的命令也是 kill 動作。zle您需要通過呼叫內置設置kill標誌來表明您的自定義小元件是一個終止操作。

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

引用自:https://unix.stackexchange.com/questions/659206