bash/readline 是否可以“清理”终端的完成建议?

bash/readline 是否可以“清理”终端的完成建议?

如果您使用 zsh 并对tab命令、路径名、选项等进行补全,只要有多个潜在匹配项,建议就会显示在提示下方。
一旦您选择了建议,zsh 将从终端中删除建议列表,如下所示:

在此输入图像描述

图片来源

相反,当 bash 提供完成建议时,它会输出列表并返回到新的提示符。

在此输入图像描述

图片来源
zsh 行为对我来说更可取,因为我从未使用过的建议没有任何价值,只会在终端中产生更多“噪音”。
是否可以通过这种方式将 bash/readline 配置为像 zsh 一样?

答案1

简而言之:这是可能的,但作为.inputrc绑定很复杂。

长:正如评论中所建议的,你可以在 bash 提示符和 readline 绑定中执行类似的操作。

保存/恢复光标将是无效的,因为您能够可靠地清除屏幕其余部分的唯一点是按下Enter以完成选择。

一旦您将控制权传递给accept-line,再清除屏幕的其余部分就为时已晚。可以(但复杂)定义一系列真实且临时的“键绑定”以使 readline 执行多个操作。参见示例

但这种方法限制您向 bash 发送字符并向 readline 发出命令。没有任何 readline 命令执行此操作

printf '\033[J'

清除屏幕的。最接近的是 readline 的内置clear-screen不是你想要什么)。你的绑定必须做类似的事情

  • beginning-of-line
  • 插入 ” printf '\033[J';
  • end-of-line
  • accept-line

end-of-line可以解决 readline 的一个怪癖。它允许您按Enter 任何地方在线上。如果您的光标位于该行的中间,则您只会看到输入的一部分(尽管 bash 会获取整个字符串)。

相关内容