zsh中Ctrl+W删除最后单词功能异常,如何改为bash同款行为?
如何让zsh中Ctrl+W的删除行为与bash一致?
在zsh环境下,输入命令行字符串abc -def时,当前的Ctrl + W行为是:
- 按一次
Ctrl + W,仅删除def,剩余abc - - 按两次
Ctrl + W,才会把abc -全部删除
而我们期望和bash一致的行为是:
- 按一次
Ctrl + W,直接删除-def,剩余abc - 按两次
Ctrl + W,删除abc
解决方法
问题的根源在于zsh默认的WORDCHARS环境变量包含了-字符,导致zsh把-视为单词的一部分,而bash不会将-当作单词分隔符。只需把-从WORDCHARS中移除即可。
临时生效(当前会话)
在命令行执行以下命令:
WORDCHARS=${WORDCHARS//-}
永久生效(所有zsh会话)
编辑~/.zshrc文件,添加上述命令:
# 调整Ctrl+W的删除行为,与bash一致 WORDCHARS=${WORDCHARS//-}
保存文件后,执行source ~/.zshrc使配置立即生效,或重启终端即可。
验证
设置完成后,再次输入abc -def,按一次Ctrl + W就会删除-def,剩余abc;按第二次则会删除abc,和bash的行为完全一致。
内容的提问来源于stack exchange,提问作者ssppjj
相关产品推荐
相关产品推荐

