Возможно ли для bash / readline «очистить» предложения по завершению вывода терминала?

Если вы используете zsh и выполняете вкладку для команд, имен путей, параметров и т. Д., Когда есть несколько потенциальных совпадений, подсказки будут отображаться под подсказкой.
Когда вы выберете предложение zsh, вы удалите список предложений из терминала, как вы можете видеть здесь:

введите описание изображения здесь

Источник изображения

В отличие от этого, когда bash предлагает предложения о завершении, он выводит список и возвращает вас в новое приглашение.

введите описание изображения здесь

Источник изображения
Мне кажется, что поведение zsh предпочтительнее, поскольку предложения, которые я никогда не использовал, не имеют никакого значения и просто производят больше «шума» в терминале.
Можно ли настроить bash / readline таким образом, как zsh?

Короче: это возможно, но сложно, как .inputrc bindings.

long: Как было предложено в комментарии, вы можете сделать что-то подобное в своих подсказках bash и readline.

Сохранение / восстановление курсора будет неэффективным, так как единственная точка, в которой вы могли бы надежно очистить оставшуюся часть экрана, будет нажатием Enter для завершения выбора.

После того, как вы передали управление accept-line , слишком поздно очистить оставшуюся часть экрана. Возможно (но сложно) определить серию реальных и специальных «привязок ключей», чтобы сделать readline более чем одной операции. См. Например

  • Комплексная привязка клавиш в bash

Но этот подход ограничивает вас отправкой символов в bash и выдачей команд readline. Ни одна из команд readline не делает

 printf '\033[J' 

чтобы очистить оставшуюся часть экрана. Ближайшим будет встроенный clear-screen readline ( не то, что вы хотите). Ваша привязка должна была бы сделать что-то вроде

  • beginning-of-line
  • вставить « printf '\033[J'; "
  • end-of-line
  • accept-line

end-of-line будет работать вокруг quirk readline. Это позволяет вам нажать Enter в любом месте линии. Если ваш курсор находился в середине строки, у вас останется только один фрагмент вашего ввода (хотя bash получит всю строку).