命令行“删除最后一个单词”行为不当

命令行“删除最后一个单词”行为不当

Ctrl + W在我的 zsh 环境中,当我尝试使用或删除命令行上的最后一个单词时Opt + Delete,它总是行为不当,例如

# start with this line below
pg_ctl --help

# Trying to delete last word with either Ctrl + W or Opt + Delete, I am hoping to get
pg_ctl
# instead I got
pg_ctl --

# Trying to delete last word again with either Ctrl + W or Opt + Delete, I'm hoping to get
pg_ctl
# but instead I got
pg_

实在是太令人沮丧了,我不得不在这里发帖寻求帮助。你们见过这个并知道如何解决吗?

我正在运行 macOS Monterey、iTerms 和 oh-myzsh。我刚刚测试过。我的 bash 环境中也会发生这种情况。

谢谢

答案1

对于哪些字符是单词的一部分、哪些不是单词的一部分,您和 shell 似乎有不同的想法。

对于zsh,您应该阅读第 4.3.4 章:单词、区域和标记用户指南的内容zsh。根据您使用的编辑模式,您也许可以通过操作变量来获得您想要的内容$WORDCHARS(它包含非字母数字字符的列表,这些字符也应被视为单词的一部分)。

(免责声明:我对 的当前版本了解不多zsh,尤其是oh-my-zsh。我的工作需要我使用许多系统,通常会精简到所需的最低限度,其中一些具有奇特的配置;所以我已经习惯了使用“ plain vanilla”shell 配置。我可能会在经常访问的系统上设置相当少的 shell 自定义设置,但如果有必要的话,没有它们我也可以生活;我了解许多专业的系统管理员通常最终都会采用这样的 shell 配置。)

对于,如果您的“删除最后一个单词”击键与库函数bash相关联(默认情况下),则它仅将字母和数字视为单词组成部分;任何其他字符都会将单词彼此分开。readlinebackward-kill-word

bash4.0 及更高版本中,应该有一个readline名为 的替代函数shell-backward-kill-word,它可能更适合您的需求。请参阅此问题了解更多详细信息。

相关内容