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

Don*_*tch 5 bash tab-completion bash-completion

在 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>
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,黑名单对我有用, 除了在我第一次发现另一个命令完成被破坏的可怕时刻,当我正在尝试快速完成文件名时。那时我需要某种“在紧急情况下打破玻璃”的优先机制。

我要求的是以下之一:

  • (a) 一种仅将一个或多个键绑定到文件名补全的方法,绕过可编程命令补全
  • (b) 一种绑定一个/多个键以暂时禁用我已部分键入的当前命令的可编程命令完成的方法
  • (c) 当我发现它被损坏的可编程命令完成隐藏时,还有其他一些聪明的非侵入性方法来完成文件名。

tha*_*guy 4

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

从man bash:

complete-filename (M-/)
  Attempt filename completion on the text before point.
Run Code Online (Sandbox Code Playgroud)