ANSI renk işleme özellikli Windows konsolu


34

Windows için ANSI renklendirmesini yorumlayan bir konsol emülatörü var mı?

Rspec kullanıyoruz ve ekibimizin bir kısmı Windows kullanıyor ve renklendirme için özel dize onlar için çok kullanışlı değil;).

Yanıtlar:


40

ConEmu , Xterm 256 renk uzantısına sahip ANSI X3.64'ü destekler. Bu konsol emülatörünün yazarıyım.

Ansi dizileri ConEmu sekmelerinde çalışan tüm işlemler için kullanılır.

AFAIK, ConEmu Ansicon'dan daha fazla kod destekliyor.

ConEmu ve ANSI X3.64 / Xterm 256 renk


1
Bu kayalar! Bir oyuncu olarak deprem özelliğini seviyorum. Ancak konsol ekranın üst kısmında kilitli görünüyor (üst kısımda kilitli seçeneği kapalı olsa bile). Thanks
Ced

cmd'yi sekmeli nasıl çalıştırırsınız?
Mikey,

@Mikey Ne? Önce cevabı oku.
Maximus

35

Bu sayfadaki cevapların hiçbiri, 16257 (ve sonraki sürümlerde) Windows 10 konsol ana bilgisayarına eklenen ANSI Terminal Denetimi için yeni desteğin önemli bir yönünü belirtmiyor . Yani, varsayılan olarak n̲o̲t̲ e̲n̲a̲b̲l̲e̲d̲'dir . Kullanmakta olduğunuz belirli bir yazılım , SetConsoleMode API'sini bayrakla çağırarak ANSI işlemeyi mümkün kılmadığı sürece, bu uygulama için renkler görmez veya ANSI işlemesi elde edemezsiniz.ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400)

ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
https://docs.microsoft.com/en-us/windows/console/setconsolemode

WriteFile veya WriteConsole ile yazarken , karakterler VT100 ve imleç hareketini, renk / yazı tipi modunu ve mevcut Konsol API'leri aracılığıyla da gerçekleştirilebilecek diğer işlemleri kontrol eden benzer kontrol karakter dizileri için ayrıştırılır. Daha fazla bilgi için, bkz. Konsol Sanal Terminal Dizileri.

Bu sayfada gösterilen örneklerin çalışma nedeninin, görünüşe göre echokomutun (veya belki de toplu işleme bölümünün CMD.EXEveya conhost), yukarıda belirtilen API'yi çağırarak ANSI işlemeyi etkinleştirmesi olduğunu tahmin ediyorum . Ama yazma yapmak için birçok araç ya yürütülebilir o stdinya stdout, bunu olmayabilir, bu durumda bu işlemler için rengi görmez.

Neyse ki, genel varsayılan değiştirilebilir opt-in için opt-out . Adresindeki kayıt defteri anahtarı, HKEY_CURRENT_USER\Console\VirtualTerminalLevelANSI çıkış dizilerinin işlenmesi için genel varsayılan davranışı ayarlar. Bir DWORDanahtar (gerekirse) oluşturun ve değerini varsayılan olarak ANSI işlemeyi 1genel olarak etkinleştirmek (veya 0devre dışı bırakmak için) olarak ayarlayın.

[Hkey_current_user \ Konsol]
"VirtualTerminalLevel" = dword: 00000001

Bu kayıt defteri ayarının bir varsayılanı kontrol ettiğini, yani yalnızca arama yaparak konsol modunu açıkça değiştirmeyen konsol uygulamalarını etkilediğini unutmayın SetConsoleMode(...). Sonuç olarak, kayıt defteri değeri konsol kipine uymayan uygulamalar için ANSI'nin etkinleştirilmesine yardımcı olsa da (bazı nedenlerden dolayı) açıkça ANSI'yi devre dışı bırakabilecek hiçbir konsol kipine duyarlı uygulama üzerinde etkisi olmayacaktır .

görüntü tanımını buraya girin


21

Windows 10 TH2'den (v1511) başlamak üzere conhost.exe(ve, uzantı olarak cmd.exe) , ANSI Escape Dizilerini, özellikle de renkleri destekler:

aşağıda belirtilen MSDN sayfasından görüntü

Konsol Sanal terminal dizilerinin hakkında MSDN sayfa dizileri desteklenen ne ve etkinleştirmeye açıklar:

Bu davranışı yapılandırmak için GetConsoleMode ve SetConsoleMode bayraklarını kullanabilirsiniz. [...]

Aşağıdaki dizilerin davranışı, VT100 ve türetilmiş terminal emülatörü teknolojilerine, özellikle de xterm terminal emülatörüne dayanmaktadır. Terminal dizileri hakkında daha fazla bilgiyi http://vt100.net adresinde ve http://invisible-island.net/xterm/ctlseqs/ctlseqs.html adresinde bulabilirsiniz .



Colortool'u kullanarak varsayılan renkleri de değiştirebilirsiniz . Yeni Windows 10 kurulumları okunması kolay (özellikle siyah üzerine mavi) biraz değiştirilmiş renkler elde edecek, ancak güncellemeler eski, okunması zor renkleri koruyacaktır.

10

Windows için ANSI renklendirmesini yorumlayan bir konsol emülatörü var mı?

10'dan önceki pencereler - konsolda ANSI renkleri için yerel destek yok

10'un altındaki Windows sürümlerinde, Windows komut konsolu varsayılan olarak çıktı renklendirmeyi desteklemez. Sen yükleyebilir ya Cmder , ConEmu , ANSICON veya mintty (GitBash ve Cygwin varsayılan olarak kullanılır) Windows komut konsoluna destek boyama ekleyin.

Windows 10 - Komut Satırı Renkleri

Windows 10'dan başlayarak, Windows konsolu varsayılan olarak ANSI Escape Sequences ve bazı renkleri destekler.

MSDN Belgeleri

gösteri

görüntü tanımını buraya girin

Toplu Komut

win10colors.cmdTarafından yazılmıştır 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

1607 Sürümünden (OS Build 14393.693) itibaren, Windows 10'daki renk devre dışı bırakılmıştır.
geff_chang

2
Buna neden inanmalıyım? Gerçekler lütfen. a) Değişiklikte hiçbir şey yok: support.microsoft.com/en-us/help/4009938 b) Benim için çalışıyor: imgur.com/a/MNPNm
Jens A. Koch

1
Tam olarak ne Win10 sürümünde emin değilim, ama burada bahsedilmiştir: github.com/symfony/symfony/issues/19520 Şirket dizüstü bilgisayarımda - Ver 1511 (OS Build 10586.753) - Buna ihtiyacım yoktu. Ev bilgisayarımda ansicon kullanmak zorunda kaldım, çünkü renkler varsayılan olarak açık değildi.
geff_chang

4
Az önce renkli çıktıyı kontrol eden ve varsayılan olarak yanlış olan bir bayrak çıkardılar. Bkz. Wpdev.uservoice.com/forums/… ) --- Symfony, bayrağın kapalı olduğu Windows'ta PHP.exe'yi kullanıyor, bu yüzden buraya inen bir yama beklemek zorunda kaldılar: github.com/php/php- src / pull / 2103 . Durum çözüldü. --- cmd.exe için bayrak her zaman doğrudur. Bu yüzden konsolda renk desteğiniz var.
Jens A. Koch

1
Bu kodlar Linux'ta bir kabuk betiğinde de çalışır mı? Yoksa bu farklı bir şekilde mi yapılır?
Mikey,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.