Zsh

如何在zsh中配置Ctrl+w作為刪除詞

  • December 16, 2020

我想用Ctrl+刪除一個單詞Wzsh

vim /foo/bar^W
vim /foo/

並找到了解決方案bash,但bind不在 zsh 函式中。

是否可以配置 ctrl-w(刪除單詞)?

如何將Ctrl+配置Wdelete-word

這是我一直在使用的*.zshrc*的一個片段:

my-backward-delete-word() {
   local WORDCHARS=${WORDCHARS/\//}
   zle backward-delete-word
}
zle -N my-backward-delete-word
bindkey '^W' my-backward-delete-word

我記得這是原始來源: http ://www.zsh.org/mla/users/2001/msg00870.html

僅供參考,我發現這裡的解決方案更加優雅。我引用:

另一種選擇是將WORDCHARS(非字母數字字元視為單詞的一部分)設置為不包含/.

如果您希望^w在點、下劃線等處打斷,也可以對此進行調整。在~/.zshrc我有:

WORDCHARS='*?_-.[]~=&;!#$%^(){}<>'

更新(2020 年 3 月 2 日)

正如@Patryk 在下面的評論中指出的那樣,這不適用於ZSH >= 5.7. 這是我測試和處理的更新zsh 5.8 (x86_64-apple-darwin18.7.0)

autoload -U select-word-style
select-word-style bash

export WORDCHARS='.-'

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