1

在我的职能中,我有

# 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

它只显示文件而不是命令?

4

1 回答 1

1

添加

echo "--$1--"

shift

问题是在

compgen -ac "notes_$1"

内容不是你所期望的

我猜当你这样做时,1 美元有价值票据

$ notes <TAB>

并且您的PATH中没有 notes_notes* 别名或命令

检查添加别名 notes_notesWHATEVER 并再次尝试自动完成

于 2012-08-27T22:52:01.703 回答