windows Win32 कंसोल को एएनएसआई/वीटी 100 एस्केप अनुक्रमों को कैसे पहचानें?




terminal console-application (8)

मैं ncurses लाइब्रेरी का हल्का संस्करण बना रहा हूं। अब तक, यह VT100- संगत टर्मिनलों के साथ बहुत अच्छी तरह से काम करता है, लेकिन Win32 कंसोल \033 कोड को बचने के अनुक्रम की शुरुआत के रूप में पहचानने में विफल रहता है:

# include <stdio.h>
# include "term.h"

int main(void) {
  puts(BOLD COLOR(FG, RED) "Bold text" NOT_BOLD " is cool!" CLEAR);
  return 0;
}

सी कोड स्तर पर क्या करने की आवश्यकता है, ताकि ANSI.SYS ड्राइवर लोड हो और एएनएसआई / वीटी 100 एस्केप अनुक्रमों को पहचाना जा सके?



पायथन 2.7 के लिए निम्न स्क्रिप्ट विंडोज 10 (v1607) के साथ ठीक है

import os

print '\033[35m'+'color-test'+'\033[39m'+" test end"
os.system('') #enable VT100 Escape Sequence for WINDOWS 10 Ver. 1607
print '\033[35m'+'color-test'+'\033[39m'+" test end"

परिणाम होना चाहिए:

[35mcolor-test[39m test end

color-test test end

यदि ANSICON स्वीकार्य नहीं है क्योंकि इसके लिए आपको सिस्टम पर कुछ इंस्टॉल करने की आवश्यकता है, तो अधिक हल्का समाधान जो एएनएसआई कोड को प्रासंगिक Win32 API कंसोल फ़ंक्शंस जैसे SetConsoleTextAttribute पार्स और अनुवाद करता है।

https://github.com/mattn/ansicolor-w32.c


[अद्यतन] विंडोज 10 वर्षगांठ अद्यतन से पहले:

एएनएसआई.वाईएसएस का एक प्रतिबंध है कि यह केवल विंडोज 95-Vista के तहत एमएस-डॉस उप-सिस्टम के संदर्भ में ही चलाया जा सकता है।

माइक्रोसॉफ्ट केबी 101875 बताता है कि कमांड विंडो में ANSI.SYS को कैसे सक्षम किया जाए, लेकिन यह विंडोज एनटी पर लागू नहीं होता है । लेख के मुताबिक: हम सभी रंगों से प्यार करते हैं , विंडोज के आधुनिक संस्करणों में यह अच्छा एएनएसआई समर्थन नहीं है।

इसके बजाए, माइक्रोसॉफ्ट ने बहुत सारे फ़ंक्शन बनाए, लेकिन यह एएनएसआई / वीटी 100 एस्केप अनुक्रम को संचालित करने की आपकी आवश्यकता से बहुत दूर है।

अधिक विस्तृत स्पष्टीकरण के लिए, विकिपीडिया आलेख देखें :

एएनएसआईएसवाईएस एनटीवीडीएम के तहत निष्पादित 16-बिट विरासत कार्यक्रमों के लिए एनटी-व्युत्पन्न सिस्टम में भी काम करता है।

Win32 कंसोल मूल रूप से एएनएसआई एस्केप दृश्यों का समर्थन नहीं करता है। हालांकि Ansicon जैसे सॉफ़्टवेयर मानक Win32 कंसोल के चारों ओर एक रैपर के रूप में कार्य कर सकते हैं और एएनएसआई एस्केप दृश्यों के लिए समर्थन जोड़ सकते हैं।

तो मुझे लगता है कि जेसन हुड द्वारा एन्सिकॉन आपका समाधान है। यह C में लिखा गया C , विंडोज के 32-बिट और 64-बिट संस्करणों का समर्थन करता है, और Ansicon

इसके अलावा मुझे कुछ अन्य समान प्रश्न या पोस्ट मिला जो अंततः ANSICON का उपयोग करने के लिए उत्तर दिया गया है:




शायद Ansicon मदद कर सकता है

बस अपनी विंडोज़ ओएस: 32 बिट या 64 बिट के आधार पर फ़ाइलों को डाउनलोड और निकालें

इसे इंस्टॉल करें: ansicon -i


मैं व्यक्तिगत रूप से clink पसंद है। यह न केवल एएनएसआई कोड को संसाधित करता है, यह कई अन्य विशेषताओं को भी जोड़ता है ताकि विंडोज कंसोल बैश (इतिहास, रिवर्स हिस्ट्री सर्च, कीबोर्ड शॉर्टकट इत्यादि) जैसा व्यवहार करे:

  • बैश के रूप में एक ही पंक्ति संपादन (जीएनयू की रीडलाइन लाइब्रेरी से)।
  • सत्रों के बीच इतिहास दृढ़ता।
  • संदर्भ संवेदनशील समापन;
    • निष्पादन योग्य (और उपनाम)।
    • निर्देशिका आदेश।
    • पर्यावरण चर
    • थर्डपार्टी टूल्स; गिट, मर्कुरियल, एसवीएन, गो, और पी 4।
  • नया कीबोर्ड शॉर्टकट;
    • क्लिपबोर्ड से चिपकाएं ( Ctrl-V )।
    • वृद्धिशील इतिहास खोज ( Ctrl-R / Ctrl-S )।
    • शक्तिशाली पूर्णता ( टीएबी )।
    • पूर्ववत करें ( Ctrl-Z )।
    • स्वचालित "सीडी .." ( Ctrl-PgUp )।
    • पर्यावरण परिवर्तनीय विस्तार ( Ctrl-Alt-E )।
    • (कई और के लिए Alt-H दबाएं ...)
  • लुआ के साथ स्क्रिप्ट योग्य समापन।
  • रंगीन और पटकथात्मक संकेत।
  • " टर्मिनेट बैच जॉब? " प्रॉम्प्ट का ऑटो-जवाब देना।




ansi-escape