bash和zsh之间的单词向前/向后分隔符区别

mar*_*rux 4 bash zsh zsh-completion

被 macOS Catalina 拖入 21 世纪,现在默认为它的 shellzsh而不是bash它的 shell,我试图恢复一些 bash 的行编辑行为。具体来说,如果我在行尾:

bash$ ls /foo/bar/baz
Run Code Online (Sandbox Code Playgroud)

然后我按 Alt-左箭头键,光标跳到“baz”,然后是“bar”,然后是“foo”。与大多数环境(例如 Safari 和使用 Cocoa 文本编辑功能的应用程序)一样,它将斜杠视为单词分隔符。

zsh,当我尝试做同样的事情时,第一个 Alt-Left Arrow 将光标一直跳回到“/foo/bar/baz”的开头,这使得它对于直接编辑 long 的部分不太有用.

这可以在zsh中配置吗?如果是这样,如何?

Phi*_*ppe 5

zsh 变量 WORDCHARS 中的字符被视为单词的一部分。

你只需要从中删除 /

% echo "$WORDCHARS"
*?_-.[]~=/&;!#$%^(){}<>
% WORDCHARS="${WORDCHARS/\//}"
# Now Alt-left-arrow will stop at /
Run Code Online (Sandbox Code Playgroud)

请注意 $WORDCHARS 也用于其他情况。看man zshall