删除zsh中类似于bash的单词(autoload无法工作)

4
我有以下代码在我的.zshrc文件中,同时我已经安装了.oh-my-zshell。
然而,在其他文章中描述的以下行不起作用:
autoload -U select-word-style
select-word-style bash

还有其他选项需要添加才能使其正常工作吗?


可能是如何使zsh的forward-word行为与bash/emacs相同的重复问题。 - Moritz Bunkus
1个回答

4
如果您想要类似于bash的'^W'行为,您可能需要取消设置'WORDCHARS'或将其放置在单独的函数中并绑定您新创建的函数。
由于我没有使用您的示例,这是我完成此操作的方式。第二个示例也用于与bash兼容,使用''来保持定义为WORDCHAR的单词边界。
x-bash-backward-kill-word(){
    WORDCHARS='' zle backward-kill-word

}
zle -N x-bash-backward-kill-word
bindkey '^W' x-bash-backward-kill-word

x-backward-kill-word(){
    WORDCHARS='*?_-[]~\!#$%^(){}<>|`@#$%^*()+:?' zle backward-kill-word
}
zle -N x-backward-kill-word 
bindkey '\e^?' x-backward-kill-word

这对我仍然无效,无论是否包含我在问题中提到的autoload部分。是由于使用了oh-my-zsh导致冲突吗? - Forethinker
1
oh-my-zsh充满了许多功能,有时可能会让人头疼。我建议您在不使用oh-my-zsh和您提到的autoload东西的情况下尝试这些代码片段。然后评估oh-my-zsh并将所需的内容分发到小文件中,并通过.zshrc源文件。 - Pale3
3
将WORDCHARS=''更改为WORDCHARS='`~!@#$%^&*()-_=+[{]}|;:",<.>/?' - Bohr
@Bohr 非常感谢你! - Forethinker
这对我来说是有效的,考虑到以下环境:
  1. 我没有安装oh-my-zsh
  2. 在macOS上可以用于删除,但不能用于跳过单词
  3. 在ubuntu上,它既适用于删除也适用于跳过单词。
- vlad-ardelean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接