ANSIカラー処理を備えたWindowsコンソール


34

ANSIカラーリングを解釈するWindows用のコンソールエミュレータはありますか?

私たちはrspecを使用しており、チームの一部はWindowsを使用しており、色付けのための特別な文字列はあまり役に立ちません;)。

回答:


40

ConEmuは、Xterm 256カラー拡張を備えたANSI X3.64をサポートしています。私はこのコンソールエミュレータの作成者です。

ANSIシーケンスは、ConEmuタブで実行されているすべてのプロセスで処理されます。

知る限りでは、ConEmuはAnsiconよりも多くのコードをサポートしています。

ConEmuおよびANSI X3.64 / Xterm 256色


1
これはすごい!ゲーマーとして、私は地震機能が大好きです。ただし、コンソールは画面上部でロックされているようです(上部でロックされているオプションが無効になっている場合でも)。ありがとう
セド

どのようにタブでcmdを実行しますか?
マイキー

@Mikey何?最初に答えを読んでください。
マキシマス

35

このページの回答には、ビルド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/setconsolemode

WriteFileまたはWriteConsoleを使用して書き込む場合、文字はVT100と、カーソルの移動、色/フォントモード、および既存のコンソールAPIを介して実行できるその他の操作を制御する類似の制御文字シーケンスについて解析されます。詳細については、「コンソール仮想端末シーケンス」を参照してください。

私はこのページの作業に示した例がそれである理由を推測している、明らかにechoコマンド(あるいはバッチ処理の一部CMD.EXEまたはconhost)今述べたAPIを呼び出すことにより、ANSI処理を可能にします。しかし、書き込みに他の多くのツールや実行ファイルをというstdinstdout、これを実行しない場合がありますが、その場合、あなたはそれらのプロセスのための色は表示されません。

幸いなことに、グローバルなデフォルトはopt-inからopt-outに変更できます。のレジストリキーHKEY_CURRENT_USER\Console\VirtualTerminalLevelは、ANSIエスケープシーケンスを処理するためのグローバルなデフォルト動作を設定します。DWORDキーを作成し(必要な場合)、その値をデフォルトでANSI処理1をグローバルに有効(または0無効)に設定します。

[HKEY_CURRENT_USER \ Console]
"VirtualTerminalLevel" = dword:00000001

このレジストリ設定はデフォルトを制御することに注意してください。つまり、を呼び出して明示的にコンソールモードを操作しないコンソールアプリにのみ影響しますSetConsoleMode(...)。その結果、レジストリ値はコンソールモードを意識しないアプリのANSIを有効にするのに役立ちますが、(何らかの理由で)明示的にANSIを無効にする可能性のあるコンソールモードに精通したアプリには効果がありません。

ここに画像の説明を入力してください


21

Windows 10 TH2(v1511)以降conhost.exe(および拡張機能によりcmd.exe)、ANSIエスケープシーケンスを特定の色でサポートします。

下記のMSDNページの画像

コンソール仮想末端配列についてのMSDNのページでは、シーケンスがサポートされているし、それらを有効にする方法について説明します。

この動作を構成するには、GetConsoleModeおよびSetConsoleModeフラグを使用できます。[...]

以下のシーケンスの動作は、VT100および派生端末エミュレーターテクノロジー、特にxterm端末エミュレーターに基づいています。端末シーケンスの詳細については、http://vt100.netおよびhttp://invisible-island.net/xterm/ctlseqs/ctlseqs.htmlを参照してください


2
サポートされているシーケンスについては、msdn.microsoft.com
en

Colortoolを使用してデフォルトの色を変更することもできます。新しいWindows 10のインストールでは、読みやすい色(特に黒の青)がわずかに変更されますが、更新すると古い読みにくい色が維持されます。

10

ANSIカラーリングを解釈するWindows用のコンソールエミュレータはありますか?

10より前のWindows-コンソールでのANSIカラーのネイティブサポートなし

Windowsバージョン10未満の場合、Windowsコマンドコンソールはデフォルトで出力の色付けをサポートしていません。あなたは、インストールすることができますいずれかCmderConEmuANSICONまたはMintty(GitBashとCygwinでデフォルトで使用)は、Windowsのコマンドコンソールへのサポートを追加するために着色します。

Windows 10-コマンドラインの色

Windows 10以降、WindowsコンソールはデフォルトでANSIエスケープシーケンスと一部の色をサポートしています。

MSDNドキュメント

デモ

ここに画像の説明を入力してください

バッチコマンド

これ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

バージョン1607(OSビルド14393.693)の時点で、Windows 10の色は無効になっています。
geff_chang

2
なぜ私はそれを信じるべきですか?事実をお願いします。:A)のchangelogでは何もありませんsupport.microsoft.com/en-us/help/4009938 b)は、私の作品:imgur.com/a/MNPNm
イェンス・A.コッホ

1
正確なWin10バージョンはわかりませんが、ここに記載されています:github.com/symfony/symfony/issues/19520会社のラップトップ-Ver 1511(OS Build 10586.753)-私はそれを必要としませんでした。自宅のPCでは、デフォルトで色がオンになっていないため、アニシコンを使用する必要がありました。
geff_chang

4
彼らは色付きの出力を制御するフラグを導入しましたが、デフォルトではfalseです。wpdev.uservoice.com/forums/…を参照してください)--- SymfonyはWindowsでPHP.exeを使用しており、フラグがオフになっているため、パッチを待つ必要がありました。パッチはここに到着しました。github.com / php / php- SRC /プル/ 2103。状況は解決しました。--- cmd.exeの場合、フラグは常にtrueです。そのため、コンソールで色をサポートしています。
イェンスA.コッホ

1
これらのコードはLinuxのシェルスクリプトでも機能しますか?それとも別の方法で行われますか?
マイキー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.