【问题标题】:Is there any WORDCHARS alternative in Bash?Bash 中是否有任何 WORDCHARS 替代品?
【发布时间】:2020-07-31 08:28:17
【问题描述】:

结论:

  • Bash 中没有 WORDCHARS 替代选项,其中无法配置 C-w 结尾。
  • mysql 依赖于 editline,可以使用 ~/.editrc 进行自定义。
  • redis-cli 依赖于linenoise,它删除了整个单词而不考虑:-

在 zsh 中,WORDCHARS 控制 C-w 删除单词时的行为。 readline 中是否有替代方案?

我最近注意到mysql/redis-cliC-w 的行为与 Bash 中的不同,尽管两者都依赖于 readline?

以字符串foo:bar为例,Bash中C-w只删除了bar。而在mysql/redis-cli 中,整个单词foo:bar 被删除。

如何控制这种行为?

【问题讨论】:

  • 无法在我的bash 中重现此内容。 C-w 按预期删除foo:bar。你能发布bind -P | grep -w w的输出吗? :后面有空格吗,即foo: bar
  • @Inian 你的 bash 版本是什么?
  • GNU bash,版本 4.4.0(1),你也确认一下,不存在空格吗?

标签: mysql bash redis readline editline


【解决方案1】:

有两个命令可以做反向杀词:

backward-kill-word
unix-word-rubout

backward-kill-word 删除 bar, unix-word-rubout 删除 foo:bar

运行以下命令以找出 C-w 绑定的内容

bind -P | grep C-w

似乎 bash 没有 zsh 中的 WORDCHARS

【讨论】:

  • vi-unix-word-rubout 可以在 "\C-w" 上找到。我试图将\C-w 绑定到backward-kill-wordunix-word-rubout。我的测试没有区别。他们都只从foo:bar中删除bar
  • 你检查过你的mysql/redis-cliC-w 绑定了什么?
  • 感谢您的提示。我忘记在这些客户端中打印键绑定。它仅证明了 redis-cli 的问题。也许 redis-cli 不依赖于 readline?我会更深入地挖掘它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-25
  • 2011-01-31
  • 2012-02-24
  • 1970-01-01
  • 2011-06-20
  • 1970-01-01
  • 2010-10-09
相关资源
最近更新 更多