function __fish_complete_subcommand -d "Complete subcommand" --no-scope-shadowing
    set -l skip_next 1
    set -l test
    switch "$argv[1]"
        case '--fcs-skip=*'
            set -l rest
            string replace -a = ' ' -- $argv[1] | read test skip_next
            set -e argv[1]
    end

    set -l res ""
    set -l had_cmd 0
    set -l cmd (commandline -cop) (commandline -ct)

    for i in $cmd

        if test $skip_next -gt 0
            set skip_next (math $skip_next - 1)
            continue
        end

        if test "$had_cmd" = 1
            set res "$res $i"
        else

            if contains -- $i $argv
                set skip_next (math $skip_next + 1)
                continue
            end

            switch $i
                case '-*'
                case '*=*'
                case '*'

                    set had_cmd 1
                    set res $i
            end
        end
    end

    printf "%s\n" (complete -C$res)

end