एएनएसआई रंगों को संभालने के साथ विंडोज कंसोल


34

क्या एएनएसआई रंग की व्याख्या करने वाले विंडोज के लिए कोई कंसोल एमुलेटर है?

हम rspec का उपयोग करते हैं और हमारी टीम का एक हिस्सा विंडोज का उपयोग करता है और रंग के लिए विशेष स्ट्रिंग उनके लिए बहुत उपयोगी नहीं है;)।

जवाबों:


40

ConEmu Xterm 256 कलर एक्सटेंशन के साथ ANSI X3.64 को सपोर्ट करता है। मैं इस कंसोल एमुलेटर का लेखक हूं।

एनी सीक्वेंस कोन्यू टैब में चल रही सभी प्रक्रियाओं के लिए संभाला जाता है।

AFAIK, ConEmu अंसोनिक की तुलना में अधिक कोड का समर्थन करता है।

ConEmu और ANSI X3.64 / Xterm 256 रंग


1
यह चट्टानें! एक गेमर के रूप में मुझे भूकंप सुविधा पसंद है। कंसोल स्क्रीन के शीर्ष पर लॉक किया गया लगता है, हालांकि (शीर्ष विकलांग पर लॉक किए गए विकल्प के साथ भी)। धन्यवाद
Ced

आप टैब के साथ cmd कैसे चलाते हैं?
मिकी

@ मायकी क्या? जवाब पहले पढ़ें।
मैक्सिमस

35

इस पृष्ठ के किसी भी उत्तर में ANSI टर्मिनल कंट्रोल के लिए नए समर्थन के एक महत्वपूर्ण पहलू का उल्लेख नहीं किया गया है जिसे 16257 (और बाद में) बनाने में विंडोज 10 कंसोल होस्ट में जोड़ा गया था । अर्थात्, यह है सक्षम नहीं डिफ़ॉल्ट रूप से। जब तक आपके द्वारा उपयोग किए जा रहे विशिष्ट सॉफ़्टवेयर ध्वज के साथ SetConsoleMode API को कॉल करके ANSI प्रसंस्करण को सक्षम करता है, तब तक आपको रंग नहीं दिखेंगेENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400) या उस अनुप्रयोग के लिए ANSI प्रसंस्करण प्राप्त नहीं होगा।

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

WriteFile या WriteConsole के साथ लिखते समय , वर्णों को VT100 और इसी तरह के नियंत्रण वर्ण अनुक्रमों के लिए पार्स किया जाता है जो कर्सर आंदोलन, रंग / फ़ॉन्ट मोड और अन्य ऑपरेशनों को नियंत्रित करते हैं जो मौजूदा कंसोल API के माध्यम से भी किए जा सकते हैं। अधिक जानकारी के लिए, कंसोल वर्चुअल टर्मिनल अनुक्रम देखें।

मैं इस पृष्ठ कार्य पर दिखाए गए उदाहरणों का कारण अनुमान लगा रहा हूं कि, जाहिरा तौर पर echoकमांड (या शायद बैच-प्रोसेसिंग पार्ट CMD.EXEया conhost) एएनएसआई प्रसंस्करण को केवल उल्लेख किए गए एपीआई को कॉल करके सक्षम करता है। लेकिन कई अन्य उपकरण या निष्पादन योग्य जो ऐसा लिखते हैं stdinया stdoutनहीं कर सकते हैं, ऐसी स्थिति में आप उन प्रक्रियाओं के लिए रंग नहीं देखेंगे।

सौभाग्य से, वैश्विक डिफ़ॉल्ट को ऑप्ट-इन से ऑप्ट-आउट में बदला जा सकता हैHKEY_CURRENT_USER\Console\VirtualTerminalLevelANSI एस्केप अनुक्रम को संसाधित करने के लिए वैश्विक डिफ़ॉल्ट व्यवहार सेट पर रजिस्ट्री कुंजी । एक DWORDकुंजी बनाएं (यदि आवश्यक हो) और इसके मूल्य 1को विश्व स्तर पर सक्षम करें (या 0अक्षम करें) ANSI प्रसंस्करण डिफ़ॉल्ट रूप से सक्षम करें।

[HKEY_CURRENT_USER \ कंसोल]
"VirtualTerminalLevel" = DWORD: 00000001

ध्यान दें कि यह रजिस्ट्री सेटिंग एक डिफ़ॉल्ट को नियंत्रित करती है , जिसका अर्थ है कि यह केवल कंसोल ऐप को प्रभावित करता है जो कॉल करके कंसोल मोड को स्पष्ट रूप से हेरफेर नहीं करते हैं SetConsoleMode(...)। यह निम्नानुसार है, जबकि रजिस्ट्री मान कंसोल-मोड-गुमनामी एप्लिकेशन के लिए एएनएसआई को सक्षम करने में मदद कर सकता है , इसका किसी भी कंसोल-मोड-प्रेमी ऐप पर कोई प्रभाव नहीं पड़ेगा (जो किसी कारण से) स्पष्ट रूप से एएनएसआई को अक्षम कर सकता है ।

यहाँ छवि विवरण दर्ज करें


21

Windows 10 TH2 (v1511) से शुरू, conhost.exe(और, विस्तार से, cmd.exe) ANSI एस्केप अनुक्रम का समर्थन करते हैं, विशेष रंगों में:

MSDN पृष्ठ से छवि नीचे बताई गई है

कंसोल आभासी टर्मिनल दृश्यों के बारे में MSDN पेज बताते दृश्यों क्या समर्थन कर रहे हैं और उन्हें कैसे सक्षम करने के लिए:

इस व्यवहार को कॉन्फ़िगर करने के लिए आप GetConsoleMode और SetConsoleMode झंडे का उपयोग कर सकते हैं । [...]

निम्नलिखित अनुक्रमों का व्यवहार VT100 और व्युत्पन्न टर्मिनल एमुलेटर प्रौद्योगिकियों पर आधारित है, विशेष रूप से एक्सटर्म टर्मिनल एमुलेटर। टर्मिनल अनुक्रमों के बारे में अधिक जानकारी http://vt100.net और http://invanish-island.net/xterm/ctlseqs/ctlseqs.html पर देखी जा सकती है ।


2
समर्थित क्रम msdn.microsoft.com/en-us/library/windows/desktop/…
dbenham

आप Colortool का उपयोग करके डिफ़ॉल्ट रंग भी बदल सकते हैं । नए विंडोज 10 इंस्टॉल में थोड़े संशोधित रंग मिलेंगे जो पढ़ने में आसान हैं (विशेषकर काले रंग में नीले), लेकिन अपडेट पुराने, कठोर-से-पढ़ने वाले रंगों को बनाए रखेंगे।

10

क्या एएनएसआई रंग की व्याख्या करने वाले विंडोज के लिए कोई कंसोल एमुलेटर है?

10 से पहले विंडोज - कंसोल पर एएनएसआई रंगों के लिए कोई देशी समर्थन नहीं

10 से नीचे के विंडोज संस्करण के लिए, विंडोज कमांड कंसोल डिफ़ॉल्ट रूप से आउटपुट कलरिंग का समर्थन नहीं करता है। आप अपने विंडोज कमांड कंसोल में कलरिंग सपोर्ट को जोड़ने के लिए Cmder , ConEmu , ANSICON या मिंट्टी (GitBash और Cygwin में डिफ़ॉल्ट रूप से प्रयुक्त) स्थापित कर सकते हैं।

विंडोज 10 - कमांड लाइन रंग

विंडोज 10 से शुरू विंडोज कंसोल एएनएसआई एस्केप सीक्वेंस और कुछ रंगों को डिफ़ॉल्ट रूप से सपोर्ट करता है।

MSDN प्रलेखन

डेमो

यहाँ छवि विवरण दर्ज करें

बैच कमान

win10colors.cmdद्वारा लिखा गया था मिशेल 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 (ओएस बिल्ड 14393.693) के रूप में, विंडोज 10 में रंग अक्षम कर दिया गया है।
geff_chang

2
मुझे ऐसा क्यों मानना ​​चाहिए? तथ्य कृपया। a) चैंज में कुछ नहीं है: support.microsoft.com/en-us/help/4009938 b) मेरे लिए काम करता है: imgur.com/a/MNPNm
Jens A. Koch

1
मुझे यकीन नहीं है कि Win10 संस्करण क्या है, लेकिन यह यहाँ बताया गया है: github.com/symfony/symfony/issues/19520 मेरी कंपनी के लैपटॉप पर - Ver 1511 (OS Build 10586.753) - मुझे इसकी आवश्यकता नहीं थी। अपने होम पीसी पर, मुझे ansicon का उपयोग करना पड़ा, क्योंकि रंग डिफ़ॉल्ट रूप से चालू नहीं थे।
geff_chang

4
उन्होंने सिर्फ एक ध्वज पेश किया, जो रंगीन आउटपुट को नियंत्रित करता है और डिफ़ॉल्ट रूप से गलत है। देखें wpdev.uservoice.com/forums/… ) --- सिम्फनी विंडोज पर PHP.exe का उपयोग कर रहा है, जहां झंडा बंद था, इसलिए उन्हें एक पैच के लिए इंतजार करना पड़ा, जो यहां उतरा: github.com/php/php- src / pull / 2103 । स्थिति हल हो गई। --- cmd.exe के लिए ध्वज हमेशा सत्य होता है। इसलिए आपको कंसोल पर कलर सपोर्ट है।
जेन्स ए कोच

1
क्या ये कोड लिंच में शेल स्क्रिप्ट में भी काम करेंगे? या यह एक अलग तरीका है?
मिकी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.