如何实现2级bash TAB自动补全
How to implements 2 level bash TAB auto-completion
这是一个test.sh,我希望它有自动完成功能
通过添加:
complete -W "1level 2level" test.sh
进入 .bashrs
当我输入test.sh 1
并按[TAB]键时,它会帮我自动填充1级。
但现在我希望它能帮助我自动完成另一列,例如:
test.sh 1level sec[TAB]
我希望我可以自定义第二和第三和第 N 列,我试过这个:
complete -W "secOption1 secOption2" test.sh 1level
complete -W "secOption1 secOption2" test.sh 2level
但是没用
您可以编写自己的自动完成功能。例如:
[STEP 100] $ echo $BASH_VERSION
4.3.30(1)-release
[STEP 101] $ cat compspec
function _compgen_foo
{
local cmd= cur= pre=
if [[ $pre == "$cmd" ]]; then
COMPREPLY=( $(compgen -W "pos1a-example pos1b-example" -- "$cur") )
return
fi
if [[ $pre == pos1* ]]; then
COMPREPLY=( $(compgen -W "pos2a-example pos2b-example" -- "$cur") )
return
fi
}
complete -F _compgen_foo foo
[STEP 102] $ source ./compspec
[STEP 103] $ foo <TAB>
[STEP 103] $ foo pos1
[STEP 103] $ foo pos1<TAB><TAB>
pos1a-example pos1b-example
[STEP 103] $ foo pos1a<TAB>
[STEP 103] $ foo pos1a-example␣
[STEP 103] $ foo pos1a-example <TAB>
[STEP 103] $ foo pos1a-example pos2
[STEP 103] $ foo pos1a-example pos2<TAB><TAB>
pos2a-example pos2b-example
[STEP 103] $ foo pos1a-example pos2
[STEP 103] $ foo pos1a-example pos2b<TAB>
[STEP 103] $ foo pos1a-example pos2b-example␣
[STEP 103] $ foo pos1a-example pos2b-example <CR>
bash: foo: command not found
[STEP 104] $
有关详细信息,请参阅 Bash 手册中的 Programmable Completion。
这是一个test.sh,我希望它有自动完成功能 通过添加:
complete -W "1level 2level" test.sh
进入 .bashrs
当我输入test.sh 1
并按[TAB]键时,它会帮我自动填充1级。
但现在我希望它能帮助我自动完成另一列,例如:
test.sh 1level sec[TAB]
我希望我可以自定义第二和第三和第 N 列,我试过这个:
complete -W "secOption1 secOption2" test.sh 1level
complete -W "secOption1 secOption2" test.sh 2level
但是没用
您可以编写自己的自动完成功能。例如:
[STEP 100] $ echo $BASH_VERSION
4.3.30(1)-release
[STEP 101] $ cat compspec
function _compgen_foo
{
local cmd= cur= pre=
if [[ $pre == "$cmd" ]]; then
COMPREPLY=( $(compgen -W "pos1a-example pos1b-example" -- "$cur") )
return
fi
if [[ $pre == pos1* ]]; then
COMPREPLY=( $(compgen -W "pos2a-example pos2b-example" -- "$cur") )
return
fi
}
complete -F _compgen_foo foo
[STEP 102] $ source ./compspec
[STEP 103] $ foo <TAB>
[STEP 103] $ foo pos1
[STEP 103] $ foo pos1<TAB><TAB>
pos1a-example pos1b-example
[STEP 103] $ foo pos1a<TAB>
[STEP 103] $ foo pos1a-example␣
[STEP 103] $ foo pos1a-example <TAB>
[STEP 103] $ foo pos1a-example pos2
[STEP 103] $ foo pos1a-example pos2<TAB><TAB>
pos2a-example pos2b-example
[STEP 103] $ foo pos1a-example pos2
[STEP 103] $ foo pos1a-example pos2b<TAB>
[STEP 103] $ foo pos1a-example pos2b-example␣
[STEP 103] $ foo pos1a-example pos2b-example <CR>
bash: foo: command not found
[STEP 104] $
有关详细信息,请参阅 Bash 手册中的 Programmable Completion。