web-dev-qa-db-ja.com

引数のメッセージはどこに表示されますか?

私は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
5
sidyll

どこを見ればわかるかはマニュアルに記載されていますが、説明の仕方では、マニュアルが何を言っているかを理解するためには、答えを実際に知っている必要があります。

_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>
6