文字列の完成を標準出力に出力するには?

文字列の完成を標準出力に出力するには?

いくつかのgitコマンドには多くのオプションがあり、必要なオプションを検索するのが便利なことがよくあります。しかし、TABメディアの幅を制御するオプションを探しているだけですgit-gui。完成品は約200個ですgit config。確実な解決策は、すべての完成した項目をエディタにコピーして検索することです。

[something] | grep tab

manまたは のinfoページcompgenもなく、help compgen説明するオプションもなく、オートコンプリート機能もありませんcompgen(ねじれは?)。

添付:compgen -A動作しません。

git-gui調達庁:これは-に関する質問ではありません。タブ幅の問題に対する解決策他の場所。

購買力の評価: これであるいいえオートコンプリートコマンドのみコマンドパラメータ

ベストアンサー1

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 ''

これは_command_offsetbash-completion(パッケージ)で定義されています。

注:この関数は対話型シェルで実行する必要があります(つまり、ファイル内にある場合は実行するのではなくファイルをインポートする必要があります)。それ以外の場合、必要な完了ルール/関数は定義されません。

PS。compgen -A組み込みタスクでのみ機能し、試す必要があります(ただし動作​​しない)ことはcompgen -F(または実際にはcompgen -o bashdefault -o default -o nospace -F _git)です。これがうまくいかない理由(そしてcompgen / completeを含むbash組み込みコマンドのドキュメント)は、以下にあります。大きな打撃(1)

おすすめ記事