回答:
ConEmuは、Xterm 256カラー拡張を備えたANSI X3.64をサポートしています。私はこのコンソールエミュレータの作成者です。
ANSIシーケンスは、ConEmuタブで実行されているすべてのプロセスで処理されます。
知る限りでは、ConEmuはAnsiconよりも多くのコードをサポートしています。
このページの回答には、ビルド16257(およびそれ以降)でWindows 10コンソールホストに追加されたANSIターミナルコントロールの新しいサポートの重要な側面について言及されていません。つまり、デフォルトではn̲o̲t̲ e̲n̲a̲b̲l̲e̲d̲です。使用している特定のソフトウェアがフラグを指定してSetConsoleMode APIを呼び出してANSI処理を有効にしない限り、そのアプリケーションの色が表示されたり、ANSI処理が行われたりすることはありません。ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400)
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
https://docs.microsoft.com/en-us/windows/console/setconsolemodeWriteFileまたはWriteConsoleを使用して書き込む場合、文字はVT100と、カーソルの移動、色/フォントモード、および既存のコンソールAPIを介して実行できるその他の操作を制御する類似の制御文字シーケンスについて解析されます。詳細については、「コンソール仮想端末シーケンス」を参照してください。
私はこのページの作業に示した例がそれである理由を推測している、明らかにecho
コマンド(あるいはバッチ処理の一部CMD.EXE
またはconhost
)今述べたAPIを呼び出すことにより、ANSI処理を可能にします。しかし、書き込みに他の多くのツールや実行ファイルをというstdin
かstdout
、これを実行しない場合がありますが、その場合、あなたはそれらのプロセスのための色は表示されません。
幸いなことに、グローバルなデフォルトはopt-inからopt-outに変更できます。のレジストリキーHKEY_CURRENT_USER\Console\VirtualTerminalLevel
は、ANSIエスケープシーケンスを処理するためのグローバルなデフォルト動作を設定します。DWORD
キーを作成し(必要な場合)、その値をデフォルトでANSI処理1
をグローバルに有効(または0
無効)に設定します。
[HKEY_CURRENT_USER \ Console] "VirtualTerminalLevel" = dword:00000001
このレジストリ設定はデフォルトを制御することに注意してください。つまり、を呼び出して明示的にコンソールモードを操作しないコンソールアプリにのみ影響しますSetConsoleMode(...)
。その結果、レジストリ値はコンソールモードを意識しないアプリのANSIを有効にするのに役立ちますが、(何らかの理由で)明示的にANSIを無効にする可能性のあるコンソールモードに精通したアプリには効果がありません。
Windows 10 TH2(v1511)以降conhost.exe
(および拡張機能によりcmd.exe
)、ANSIエスケープシーケンスを特定の色でサポートします。
コンソール仮想末端配列についてのMSDNのページでは、シーケンスがサポートされているし、それらを有効にする方法について説明します。
この動作を構成するには、GetConsoleModeおよびSetConsoleModeフラグを使用できます。[...]
以下のシーケンスの動作は、VT100および派生端末エミュレーターテクノロジー、特にxterm端末エミュレーターに基づいています。端末シーケンスの詳細については、http://vt100.netおよびhttp://invisible-island.net/xterm/ctlseqs/ctlseqs.htmlを参照してください。
ANSIカラーリングを解釈するWindows用のコンソールエミュレータはありますか?
10より前のWindows-コンソールでのANSIカラーのネイティブサポートなし
Windowsバージョン10未満の場合、Windowsコマンドコンソールはデフォルトで出力の色付けをサポートしていません。あなたは、インストールすることができますいずれかCmder、ConEmu、ANSICONまたはMintty(GitBashとCygwinでデフォルトで使用)は、Windowsのコマンドコンソールへのサポートを追加するために着色します。
Windows 10-コマンドラインの色
Windows 10以降、WindowsコンソールはデフォルトでANSIエスケープシーケンスと一部の色をサポートしています。
デモ
バッチコマンド
これwin10colors.cmd
はミケーレ・ロカティによって書かれました:
@echo off
cls
echo [101;93m STYLES [0m
echo ^<ESC^>[0m [0mReset[0m
echo ^<ESC^>[1m [1mBold[0m
echo ^<ESC^>[4m [4mUnderline[0m
echo ^<ESC^>[7m [7mInverse[0m
echo.
echo [101;93m NORMAL FOREGROUND COLORS [0m
echo ^<ESC^>[30m [30mBlack[0m (black)
echo ^<ESC^>[31m [31mRed[0m
echo ^<ESC^>[32m [32mGreen[0m
echo ^<ESC^>[33m [33mYellow[0m
echo ^<ESC^>[34m [34mBlue[0m
echo ^<ESC^>[35m [35mMagenta[0m
echo ^<ESC^>[36m [36mCyan[0m
echo ^<ESC^>[37m [37mWhite[0m
echo.
echo [101;93m NORMAL BACKGROUND COLORS [0m
echo ^<ESC^>[40m [40mBlack[0m
echo ^<ESC^>[41m [41mRed[0m
echo ^<ESC^>[42m [42mGreen[0m
echo ^<ESC^>[43m [43mYellow[0m
echo ^<ESC^>[44m [44mBlue[0m
echo ^<ESC^>[45m [45mMagenta[0m
echo ^<ESC^>[46m [46mCyan[0m
echo ^<ESC^>[47m [47mWhite[0m (white)
echo.
echo [101;93m STRONG FOREGROUND COLORS [0m
echo ^<ESC^>[90m [90mWhite[0m
echo ^<ESC^>[91m [91mRed[0m
echo ^<ESC^>[92m [92mGreen[0m
echo ^<ESC^>[93m [93mYellow[0m
echo ^<ESC^>[94m [94mBlue[0m
echo ^<ESC^>[95m [95mMagenta[0m
echo ^<ESC^>[96m [96mCyan[0m
echo ^<ESC^>[97m [97mWhite[0m
echo.
echo [101;93m STRONG BACKGROUND COLORS [0m
echo ^<ESC^>[100m [100mBlack[0m
echo ^<ESC^>[101m [101mRed[0m
echo ^<ESC^>[102m [102mGreen[0m
echo ^<ESC^>[103m [103mYellow[0m
echo ^<ESC^>[104m [104mBlue[0m
echo ^<ESC^>[105m [105mMagenta[0m
echo ^<ESC^>[106m [106mCyan[0m
echo ^<ESC^>[107m [107mWhite[0m
echo.
echo [101;93m COMBINATIONS [0m
echo ^<ESC^>[31m [31mred foreground color[0m
echo ^<ESC^>[7m [7minverse foreground ^<-^> background[0m
echo ^<ESC^>[7;31m [7;31minverse red foreground color[0m
echo ^<ESC^>[7m and nested ^<ESC^>[31m [7mbefore [31mnested[0m
echo ^<ESC^>[31m and nested ^<ESC^>[7m [31mbefore [7mnested[0m