zsh向后删除字不识别“/”字符

yon*_*ong 6 zsh

我希望 Zsh 上的 ctrl-W 在遇到“/”字符时停止。我的 .zshrc 文件中有以下内容,但它不会停在“/”上。到底是怎么回事?

default-backward-delete-word () {
  local WORDCHARS="*?_[]~=/&;!#$%^(){}<>"
  zle backward-delete-word
}
zle -N default-backward-delete-word
bindkey '^W' default-backward-delete-word
Run Code Online (Sandbox Code Playgroud)

Ada*_*hon 12

问题是,这/是您的WORDCHARS.

根据zshparam(1)

字字符 <S>

行编辑器认为是单词一部分的非字母数字字符列表。

所以如果你想让zsh考虑/作为单词分隔符,它不应该在WORDCHARS. 我还建议在定义它时使用单引号而不是双引号 - 特别是因为那里有一个$,这可能会导致不必要的扩展。

local WORDCHARS='*?_[]~=&;!#$%^(){}<>'
Run Code Online (Sandbox Code Playgroud)