私はzsh補完スクリプトを書くことを学んでおり、_arguments
のドキュメントを読んでいるときに、この部分を見つけました。
n:message:action
n :: message:action
これは、n番目の通常の議論を示しています。 messageは
生成された一致の上に印刷され、actionは[...]を示します
messageはどこに印刷されていますか?次の最小限の機能を試してみましたが、わかりません。シェルで何かを有効にする必要がありますか?
function _test {
_arguments '-a' '-b[description]:my message:(x y)'
}
$ compdef _test program
これは次の結果になります:
$ program -b <tab>
x y
どこを見ればわかるかはマニュアルに記載されていますが、説明の仕方では、マニュアルが何を言っているかを理解するためには、答えを実際に知っている必要があります。
_arguments
これを「メッセージ」と呼び、マニュアルではこれを「説明する」と述べています。だからあなたは信仰の飛躍を遂げる—または_arguments
のソースコードを読んで、このメッセージが _describe
に渡されることを理解してください。この関数のドキュメントには、
descr
は、format
タグのdescriptions
スタイルが設定されている場合、一致の上に表示する文字列として解釈されます。
スタイルは zstyle
で設定するものです。 セクション「完了システム構成」 は、完了のためのスタイルの形式を文書化します。
フィールドは常に
:completion:function:completer:command:argument:tag
の順序です。
したがって、zstyle ':completion:*:*:*:*:descriptions' format=SOMETHING
を呼び出す必要があります。または、特定のコンテキストでのみ実行したい場合は、*
を別のものに置き換えます。
descriptions
タグのドキュメント は、この段階では特に役立ちませんが、- format
スタイルのドキュメント は次のとおりです。
これがdescriptionsタグに設定されている場合、その値は文字列として使用され、補完リストで一致を上に表示します。この文字列のシーケンス
%d
は、これらの一致が何であるかについての短い説明で置き換えられます。この文字列には、compadd -X
が理解する出力属性シーケンスも含まれる場合があります。
compadd
のドキュメントを参照してください。ドキュメントはプロンプトの展開を示しています。主に 視覚効果 を使用できます。
だから走る
zstyle ':completion:*:*:*:*:descriptions' format '%F{green}%d%f'
完了の上に緑色でそのメッセージが表示されます。または
zstyle ':completion:*:*:program:*:descriptions' format '%F{green}%d%f'
program
の引数を完了するときにのみ適用する場合。
補完のformat
zstyleを設定する必要があります:
zstyle ':completion:*' format 'Completing %d'
次に:
$プログラム-b Tab メッセージを完了します x y
見る info zsh format
詳細については。
これは、このメニュー選択に従う場合、compinstall
によって設定されます。
3. Styles for changing the way completions are displayed and inserted.
[...]
1. Change appearance of completion lists: allows descriptions of
completions to appear and sorting of different types of completions.
[...]
1. Print a message above completion lists describing what is being
completed.
[...]
You can set a string which is displayed on a line above the list of matches
for completions. A `%d' in this string will be replaced by a brief
description of the type of completion. For example, if you set the
string to `Completing %d', and type ^D to show a list of files, the line
`Completing files' will appear above that list. Enter an empty line to
turn this feature off. If you enter something which doesn't include `%d',
then `%d' will be appended. Quotation will be added automatically.
description>