web-dev-qa-db-ja.com

ANSI / VT100コードを使用したPowerShellコンソールでの色付きテキスト出力

ANSIエスケープシーケンス を含む文字列を出力するプログラムを作成して、テキストに色を付けました。しかし、スクリーンショットでわかるように、デフォルトのWindows 10コンソールでは期待どおりに機能しません。

プログラム出力は、エスケープシーケンスとともに印刷文字として表示されます。変数またはパイピングを介してその文字列をPowerShellに渡すと、出力は意図したとおりに表示されます(赤色のテキスト)。

プログラムが回避策なしで色付きのテキストを印刷するようにするにはどうすればよいですか?

enter image description here

これは私のプログラムソース(Haskell)です-しかし、言語は関係ないので、エスケープシーケンスがどのように書かれているかを見ることができます。

main = do
    let red = "\ESC[31m"
    let reset = "\ESC[39m"
    putStrLn $ red ++ "RED" ++ reset
11
Swonkie

VTサポートが自動的に有効にならないことを認識してくれたユーザーmklement0に感謝します。これにより、正しい方向を見ることができ、 この役立つ投稿 が見つかりました。

私の質問に答えるために:レジストリキーを追加または設定します

HKCU:\Console  -  [DWORD] VirtualTerminalLevel = 1

コンソールを再起動すると動作します。

8
Swonkie