在 bash 中紧急覆盖损坏的命令完成?

emergency override of broken command completions in bash?

我在 bash 中工作的最大烦恼之一是长期中断的命令完成。 有数百个编程命令完成,每天都在编写更多,一些由发行版(我目前主要使用 ubuntu linux)或上游, 还有一些是我公司的人。不可避免的是,在任何给定时间,它们中的数十个都会坏掉。我接受。

我不接受的是错误的命令完成阻止我完成文件名完成。 文件名补全对我的工作效率至关重要;当我无法访问它时,这对我的工作流程来说是非常痛苦和混乱的。

有一段时间,我只是禁用了所有命令完成,因为我判断 可靠的文件名完成对我来说比价值更重要 所有其他命令完成的总和。

但是...然后我决定再试一次,而不是禁用 他们全部,我在我的 .bashrc:

中将我知道被破坏的一个一个地列入黑名单
#
# Blacklist for known broken command completions
#

  # Command completions prevent vim'ing .jpg files!? Not ok.
  complete -r vi
  complete -r vim
  complete -r view

  complete -r google-chrome # google-chrome ./myFil<tab>

  # The rest of these are gratuitous strong evil magic
  # that can't be killed by "complete -r",
  # so stronger good magic "complete -F _minimal" is necessary instead.
  complete -F _minimal ci    # ci -l ./java<tab> when ./javacpp and ./javarenumber both exist but only javarenumber has been previously checked in
  complete -F _minimal alias # alias pppp ~/<tab>

黑名单大部分对我有用, except 在我第一次发现另一个命令完成的那个糟糕时刻 坏了,当我正在尝试快速完成文件名时。 那时我需要某种 "in case of emergency break glass" 覆盖机制。

我要的是以下其中一项:

使用A​​lt+/。它作为文件名完成,而不是通过可编程完成。

来自man bash

complete-filename (M-/)
  Attempt filename completion on the text before point.