この問題そして回答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が提供しました。この回答これが私が求めている行動に最も近いものです。
さまざまな回答やコメントで議論されている欠点のないより良い解決策がある場合は、ここまたはスタックオーバーフローに回答を追加してください。
答え2
set color
~/.cshrc または ~/.tcshrc に以下を追加してみてください。