有些git
命令有很多选项,在它们中搜索我需要的选项通常很有用 - 我只是在寻找控制TAB中宽度的选项git-gui
,但 . 大约有 200 个补全git config
。一个明显的解决方法是将所有完成复制到编辑器中并搜索它们,但我宁愿这样做
[something] | grep tab
没有man
或info
的页面compgen
,help compgen
甚至没有解释它自己的选项,并且没有自动完成compgen
(这是讽刺吗?)。
附:compgen -A
不起作用。
PPS:这不是一个关于git-gui
- 的问题制表符宽度问题的解决方案在别处。
购买力平价:这是不是仅关于自动完成命令命令参数。
答案1
sudo
您可以使用以下函数,它使用与自动完成相同的方式生成完成列表:
comp() {
local COMP_LINE="$*"
local COMP_WORDS=("$@")
local COMP_CWORD=${#COMP_WORDS[@]}
((COMP_CWORD--))
local COMP_POINT=${#COMP_LINE}
local COMP_WORDBREAKS='"'"'><=;|&(:"
# Don't really thing any real autocompletion script will rely on
# the following 2 vars, but on principle they could ~~~ LOL.
local COMP_TYPE=9
local COMP_KEY=9
_command_offset 0
echo ${COMPREPLY[@]}
}
comp git config ''
其中_command_offset
在 bash-completion (包)中定义。
注意:该函数需要在交互式 shell 中运行(即,如果它在文件中,则需要获取该文件而不仅仅是运行。),否则将不会定义必要的完成规则/函数。
附言。compgen -A
仅适用于内置操作,您应该尝试的(但也不起作用)是compgen -F
(或实际上compgen -o bashdefault -o default -o nospace -F _git
)。这不起作用的原因(以及 bash 内置命令的文档,包括 compgen/complete)可以在以下位置找到重击(1)。