在我的功能中我有
# Tab completion
if [ "$1" = "--complete" ]; then
shift
# Commands
for line in $(compgen -ac "notes_$1" | sed 's/^notes_//'); do
echo $line
done
# Notes
for line in $(cd $NOTES_DIR; ls $1* 2>/dev/null); do
echo $line
done
return
这应该列出所有以notes_开头的命令和某些目录中的所有文件,并且在调用notes --complete
时执行。但是,当我尝试使用标签完成时
complete -C 'notes --complete "$COMP_LINE"' notes
它只显示文件而不是命令?
答案 0 :(得分:1)
添加
echo "--$1--"
后
shift
问题在于
compgen -ac "notes_$1"
内容不是您所期望的
我猜 $ 1 当你做笔记
$ notes <TAB>
PATH
中没有notes_notes *别名或命令检查添加别名notes_notesWHATEVER并再次尝试自动完成