我希望 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='*?_[]~=&;!#$%^(){}<>'