tcshでタップ補完色を提供する方法は?

tcshでタップ補完色を提供する方法は?

StackOverflow.comでクロスポスト)

この問題そして回答tcshプロンプトに色を導入する方法を教えてください。

このページコマンドの出力に色を追加する方法の優れた説明echo

> echo \\e[1\;30mBLACK\\e[0m
BLACK
> echo '\e[1;30mBLACK\e[0m'
BLACK

上記の例では、「BLACK」という単語は、全体のカラースキームに従って黒(または濃い灰色)の前景色で印刷されています。

[TAB]それをtcsh

complete testcmd 'p/*/`echo '"'"'\e[1;30mf834fef\e[0m'"'"'`/'

私は得る:

> testcmd [TAB]
> testcmd ^[\[1\;30mf834fef^[\[0m

明らかに、これらの文字は特別な意味を失ったようです。うまくいけば、私が正しく脱出していないことを願っています。しかし、私は他のいくつかの方法を試しました。よって、どんな助けでも大変感謝いたします。

実際のユースケースは、視覚的に区別したい3種類の完成を提供するコマンド補完があるということです。代替は外部コマンドによっても計算されます。そのため、外部コマンドにバックティックを使用するには完成が必要ですecho。たとえば、このコマンドの詳細は気にしません。のコマンドを使ってtcsh何らかの方法で動作させるとcomplete適応できるはずです(perl -peラッパーなどを考えてみてください)。

私がこれを信じる理由持つ何とかうまくいくのは、tcsh自体が を入力すると、色付きのコマンド補完を提供することですls [TAB]。これは私の設定でうまくいきます。オートコンプリート内で使用することもls -1Fでき、出力色lsもパイプします。例は次のとおりです。

complete testcmd 'p/*/`ls -1F`/'

アップデート:mavinユーザーとしてstackoverflowで指摘、この例の色合いはls実際にはパイプされません。色はls失われますが、オートコンプリート機能は、/lsの追加や終了の表示などのプロンプトに基づいて、LS_COLOURS変数に基づいて色を再適用できます。*これは実行して確認できます。

complete testcmd 'p/*/`ls --color -1`/'

色を提供できず、歪んだ出力のみを提供します。 (文字通りエスケープ文字シーケンスによるパイピング)

私のtcshバージョンは6.13.00です。

どんなアイデアがありますか?針?

ベストアンサー1

私が望む方法で作業することは不可能に見えます。 Stack Overflowでは、ユーザーmavitが提供しました。この回答これが私が求めている行動に最も近いものです。

さまざまな回答やコメントで議論されている欠点のないより良い解決策がある場合は、ここまたはスタックオーバーフローに回答を追加してください。

おすすめ記事