在 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) 一种将 key/keys 绑定到文件名补全的方法,绕过
可编程命令完成
- (b) 一种将 key/keys 绑定到
暂时禁用当前的可编程命令完成
我已经部分输入的命令
- (c) 其他一些聪明的
我现在以非侵入式方式完成文件名
发现它被一个损坏的可编程命令隐藏了
完成。
使用Alt+/。它作为文件名完成,而不是通过可编程完成。
来自man bash
:
complete-filename (M-/)
Attempt filename completion on the text before point.
我在 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) 一种将 key/keys 绑定到文件名补全的方法,绕过 可编程命令完成
- (b) 一种将 key/keys 绑定到 暂时禁用当前的可编程命令完成 我已经部分输入的命令
- (c) 其他一些聪明的 我现在以非侵入式方式完成文件名 发现它被一个损坏的可编程命令隐藏了 完成。
使用Alt+/。它作为文件名完成,而不是通过可编程完成。
来自man bash
:
complete-filename (M-/)
Attempt filename completion on the text before point.