【问题标题】:bash tab completion - do not reprint options + promptbash 选项卡完成 - 不重印选项 + 提示
【发布时间】:2018-01-18 23:03:56
【问题描述】:

在 bash 中执行制表符补全(例如 cd dir_ <TAB>)时,Tab 的后续命中会导致重新打印匹配选项列表,每次按 Tab 键一次(下图)。每一个新行都是我按一次 Tab ,然后重新打印选项(和提示)。

现在,例如在 zsh 中,此行为已被禁用。在下图中,我输入了cd dir_,然后重复点击选项卡。根据需要,提示和可用的完成选项不会重新打印,而是保持原样,位于当前提示下方。

这完全可以用 bash 实现吗?反复按 Tab 时,屏幕会填满所有选项,这很烦人。

编辑
3 年后,我很高兴地报告我终于使用 zsh,这不再困扰我

【问题讨论】:

  • 提示符“test_dir $”和命令“cd dir_”的重复打印是否也是TAB键被按下造成的?
  • (不要重复按 Tab...) Tab 补全通常是可配置的。但是,这不是编程问题,应发布到 Super UserUnix & Linux 以获得正确答案。
  • Zsh 的完成度远远超过 Bash 的。 Bash 永远不会在不移动光标的情况下打印完成候选者(也就是说不重新打印提示)。
  • bash 对此没有全局设置,但可以通过每个命令的方式来实现,这显然不实用。
  • @shellter 好的,谢谢。我不确定要在哪个网站上发布它,在发布之前进行了搜索,并在这里发现了一堆 bash 问题,我想我就把它放在这里。

标签: bash tab-completion


【解决方案1】:

将这两行添加到你的 bashrc

bind 'set show-all-if-ambiguous on'
bind 'TAB:menu-complete'

你应该没事..但我看到你已经搬到 zsh 了。

更多关于bind(a bash built-in)

bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name]
     [-r keyseq] [-x keyseq:shell-command] 
     [keyseq:readline-function | readline-command]

【讨论】:

  • 感谢您的回答@hardeep!我也对这个答案感到非常恼火,但不想仅仅为此目的更换外壳。
猜你喜欢
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
相关资源
最近更新 更多