l0b*_*0b0 15 bash autocomplete compgen
一些的git
命令有很多选择,而且常常是通过他们的一个我需要寻找有用的-我只是在寻找它控制选项TAB的宽度git-gui
,但也有大约200完成为git config
。一个明显的解决方法是将所有补全复制到编辑器中并搜索它们,但我宁愿这样做
[something] | grep tab
Run Code Online (Sandbox Code Playgroud)
没有man
或info
页面compgen
,help compgen
甚至没有解释它自己的选项,并且没有自动完成 for compgen
(讽刺的是如何?)。
PS:compgen -A
不起作用。
PPS:这不是一个问题git-gui
-标签宽度问题的解决方案在别处。
PPPS:这与自动完成命令无关,仅与命令参数有关。
yuy*_*hao 11
您可以使用以下函数,它使用与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 ''
Run Code Online (Sandbox Code Playgroud)
where_command_offset
是在 bash-completion (package) 中定义的。
注意:该函数需要在交互式 shell 中运行(即,如果它在一个文件中,则需要获取该文件而不是仅运行。)否则将不会定义必要的完成规则/函数。
附注。compgen -A
仅适用于内置操作,您应该尝试(但也不起作用)是compgen -F
(或实际上compgen -o bashdefault -o default -o nospace -F _git
)。这不起作用的原因(以及 bash 内置命令的文档,包括 compgen/complete)可以在bash(1) 中找到。
归档时间: |
|
查看次数: |
1342 次 |
最近记录: |