Jawaban:
ConEmu mendukung ANSI X3.64 dengan ekstensi warna Xterm 256. Saya penulis emulator konsol ini.
Urutan Ansi ditangani untuk semua proses, berjalan di tab ConEmu.
AFAIK, ConEmu mendukung lebih banyak kode, daripada Ansicon.
Tidak ada jawaban di halaman ini yang menyebutkan aspek penting dari dukungan baru untuk Kontrol Terminal ANSI yang ditambahkan ke host konsol Windows 10 di build 16257 (dan lebih baru). Yaitu, itu tidak diaktifkan secara default. Kecuali jika perangkat lunak khusus yang Anda gunakan memungkinkan pemrosesan ANSI dengan memanggil SetConsoleMode API dengan ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400)
bendera, Anda tidak akan melihat warna atau mendapatkan pemrosesan ANSI untuk aplikasi itu.
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
https://docs.microsoft.com/en-us/windows/console/setconsolemodeSaat menulis dengan WriteFile atau WriteConsole , karakter diurai untuk VT100 dan urutan karakter kontrol serupa yang mengontrol pergerakan kursor, mode warna / font, dan operasi lain yang juga dapat dilakukan melalui API Konsol yang ada. Untuk informasi lebih lanjut, lihat Urutan Terminal Virtual Konsol.
Saya menduga alasan contoh yang ditunjukkan pada halaman ini berfungsi adalah, ternyata echo
perintah (atau mungkin bagian pemrosesan batch dari CMD.EXE
atau conhost
) memungkinkan pemrosesan ANSI dengan memanggil API yang baru saja disebutkan. Tetapi banyak alat atau executable lain yang menulis stdin
atau stdout
mungkin tidak melakukan ini, dalam hal ini Anda tidak akan melihat warna untuk proses tersebut.
Untungnya, default global dapat diubah dari opt-in ke opt-out . Kunci registri at at HKEY_CURRENT_USER\Console\VirtualTerminalLevel
menetapkan perilaku default global untuk memproses urutan pelarian ANSI. Buat DWORD
kunci (jika perlu) dan tetapkan nilainya untuk 1
mengaktifkan (atau 0
untuk menonaktifkan`) pemrosesan ANSI secara global .
[HKEY_CURRENT_USER \ Console] "VirtualTerminalLevel" = dword: 00000001
Perhatikan bahwa pengaturan registri ini mengontrol default , artinya hanya memengaruhi aplikasi konsol yang tidak secara eksplisit memanipulasi mode konsol dengan menelepon SetConsoleMode(...)
. Oleh karena itu, meskipun nilai registri dapat membantu mengaktifkan ANSI untuk aplikasi yang tidak memperhatikan mode konsol , itu tidak akan berpengaruh pada aplikasi apa pun yang memahami mode konsol yang (karena alasan tertentu) dapat secara eksplisit menonaktifkan ANSI.
Mulai dari Windows 10 TH2 (v1511), conhost.exe
(dan, dengan ekstensi, cmd.exe
) mendukung ANSI Escape Sequences, dalam warna tertentu:
The MSDN Halaman tentang Console Virtual Terminal Urutan menjelaskan apa urutan yang didukung dan cara mengaktifkan mereka:
Anda dapat menggunakan flag GetConsoleMode dan SetConsoleMode untuk mengonfigurasi perilaku ini. [...]
Perilaku dari urutan berikut didasarkan pada VT100 dan teknologi emulator terminal turunan, terutama emulator terminal xterm. Informasi lebih lanjut tentang urutan terminal dapat ditemukan di http://vt100.net dan di http://invisible-island.net/xterm/ctlseqs/ctlseqs.html .
Apakah ada emulator konsol untuk Windows yang menginterpretasikan pewarnaan ANSI?
Windows sebelum 10 - tidak ada dukungan asli untuk warna ANSI di konsol
Untuk versi Windows di bawah 10, konsol perintah Windows tidak mendukung pewarnaan keluaran secara default. Anda dapat menginstal Cmder , ConEmu , ANSICON atau Mintty (digunakan secara default di GitBash dan Cygwin) untuk menambahkan dukungan pewarnaan ke konsol perintah Windows Anda.
Windows 10 - Warna Baris Perintah
Mulai dari Windows 10, konsol Windows mendukung ANSI Escape Sequences dan beberapa warna secara default.
Demo
Perintah Batch
Itu win10colors.cmd
ditulis oleh Michele Locati :
@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