Ubuntu13.10とfish2.1.0を実行しています。コマンドラインからいくつかのタスクを実行するためのPythonスクリプトを自分で作成したいと思います。スクリプトにはコマンドライン引数が必要です。
Fishが特定の引数に対して可能な値を要求して取得できるように、スクリプトを作成するにはどうすればよいですか。潜在的な値のリストは動的です。つまり、プログラムによって決定されます(たとえば、いくつかの基準に一致するフォルダー名のリスト)。
私が目指している最終結果は次のようなものです。
user@machine ~> myprog argument=fol<TAB>
folder1 folder2 folder3
ここで、myprog
は私のスクリプトファイル、argument
は引数名、folder1
etcは、スクリプト内の関数によって生成された有効な値です。
これは可能ですか?もしそうなら、どのように?
GitHubに関するzancheyのコメント から適応:
--_completion
オプションを使用するプログラムmyprog
がある場合、次のようなmyprog
の単一の完了スタブを記述できます。
complete --command myprog --arguments '(myprog --_completion (commandline -cp)'
その後、プログラムはmyprog --_completion myprog some arguments here
として呼び出され、適切な完了で応答できます。完了している現在のトークンのみを返す必要があり(これを(commandline -ct)
でプログラムに渡すか、自分でトークン化することもできます)、オプションでタブと簡単な説明が続きます。複数の補完は新しい行で区切られます。
ノート:
--_completion
は python-selfcompletion ライブラリによって提案された規則ですが、好きなものを使用でき、この回答はPython固有ではありません特にPythonスクリプトの場合、次のライブラリは将来のある時点で魚の補完をサポートする可能性があります(ただし、まだサポートしていません)。