Zsh reverse-delete-word 无法识别“/”字符

Zsh reverse-delete-word 无法识别“/”字符

我希望 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

答案1

问题是,这/是你的一部分WORDCHARS

根据zshparam(1)

字元字符 <S>

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

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

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

相关内容