LESS_TERMCAP_ * चर पर प्रलेखन?


38

इन चरों के झुंड को सेट करते समय मैंने इन सुंदर रंगों को मैनपाट में कम देखा। उनका क्या मतलब है, दस्तावेज कहां है? क्या इसकी व्याख्या कम या अधिरोपित है?

स्क्रीनशॉट

मैन पेज के एस.एस.

जवाबों:


45

टर्मकैप एक पुस्तकालय है जो टर्मिनल तक पहुंचने के लिए कम उपयोग करता है। टर्मकैप मोटे तौर पर अप्रचलित है, जिसे टर्मिनफो द्वारा बदल दिया गया है , लेकिन टर्मिंफो आवेदनों के लिए एक टर्मकैप अनुकूलता इंटरफेस प्रदान करता है। कम टर्मपैक इंटरफेस के साथ सामग्री है और इसका उपयोग करता है।

टर्मपैक लाइब्रेरी टर्मिनल की सुविधाओं का विवरण है। प्रत्येक सुविधा की पहचान दो-अक्षर (या आमतौर पर दो-वर्ण) कोड द्वारा की जाती है। उदाहरण के लिए, hcहार्डकॉपी टर्मिनलों (यानी प्रिंटर, स्क्रीन नहीं) की पहचान करता है; coस्तंभों की संख्या है; mdबोल्ड टेक्स्ट प्रदर्शित करना शुरू करता है। प्रत्येक क्षमता का एक मूल्य होता है, जो एक बूलियन (जैसा कि hc), एक पूर्णांक (जैसा co) या एक स्ट्रिंग (जैसा कि md) हो सकता है। कई स्ट्रिंग्स ऐसे सीक्वेंस से बचते हैं जो एक निश्चित प्रभाव को प्राप्त करने के लिए टर्मिनल को भेज सकते हैं।

क्यों बचते हैं सीक्वेंस? क्योंकि टर्मिनल और एप्लिकेशन के बीच का इंटरफ़ेस एक कैरेक्टर स्ट्रीम (अधिक सटीक रूप से, प्रत्येक दिशा में एक कैरेक्टर स्ट्रीम: उपयोगकर्ता इनपुट के लिए एक, डिस्प्ले के लिए आउटपुट के लिए एक) है। जब कोई एप्लिकेशन टर्मिनल पर एक चरित्र लिखता है, तो यह आमतौर पर प्रदर्शित होता है। कुछ वर्णों का एक अलग व्यवहार होता है: वे नियंत्रण वर्ण होते हैं, जो कर्सर को इधर-उधर ले जाने, प्रदर्शन विशेषताओं को बदलने आदि जैसी चीज़ें करते हैं, नियंत्रण वर्णों की तुलना में बहुत अधिक कमांड होते हैं, इसलिए अधिकांश क्रम एस्केप अनुक्रम द्वारा एक्सेस किए जाते हैं, जो इसके साथ शुरू होते हैं एक विशेष चरित्र (अक्सर पलायन चरित्र, इसलिए नाम)।

उदाहरण के लिए, जब लेस कुछ बोल्ड टेक्स्ट प्रदर्शित करना चाहता है, तो यह mdक्षमता का मूल्य दिखता है। यह एक स्ट्रिंग है, जो टर्मिनल को कम लिखता है। टर्मिनल इस स्ट्रिंग को भागने के क्रम के रूप में पहचानता है, और इसकी आंतरिक स्थिति को समायोजित करता है ताकि बाद के पात्रों को बोल्ड में प्रदर्शित किया जा सके।

हार्डवेयर टर्मिनलों के शुरुआती दिनों में, विभिन्न ब्रांडों के अलग-अलग अनुक्रम और क्षमताएं थीं; टर्मपैक डेटाबेस और इंटरफ़ेस का आविष्कार किया गया था ताकि अनुप्रयोगों को हर टर्मिनल मॉडल के बारे में पता न चले। आजकल अधिकांश टर्मिनल एमुलेटर में बहुत ही समान क्षमताएं हैं, लेकिन टर्मकैप या टर्मिनफो डेटाबेस अभी भी मामूली अंतर से निपटने के लिए उपयोगी है।

LESS_TERMCAP_*चर वातावरण में या में सेट किया जा सकता .lesskeyफ़ाइल । यह टर्मिनल क्षमताओं के लिए वैकल्पिक मूल्यों के साथ कम प्रदान करता है। जब कम एक टर्मिनल क्षमता का उपयोग करना चाहता है, तो बोल्ड पर स्विच करें, यह पहले जांचता है कि क्या कोई LESS_TERMCAP_mdचर है। यदि यह चर मौजूद है, तो बोल्ड पर स्विच करने के लिए एस्केप अनुक्रम के रूप में अपने मान का उपयोग करता है। यदि नहीं, तो यह टर्मपैक डेटाबेस से मूल्य का उपयोग करता है। यह तंत्र कम के लिए उपयोगकर्ता को टर्मकैप डेटाबेस सेटिंग्स को ओवरराइड करने की अनुमति देता है।

सबसे उपयोगी LESS_TERMCAP_*सेटिंग्स एस्केप सीक्वेंस हैं। आप विशेषताओं को विभिन्न विशेषताओं में मैप कर सकते हैं। आप tputसिस्टम के टर्मकैप या टर्मिनेफो डेटाबेस में वर्तमान टर्मिनल के लिए क्षमता का मान देखने के लिए कमांड का उपयोग कर सकते हैं । यदि आप टर्मिनल-निर्भर होने का बुरा नहीं मानते हैं तो आप सीधे बच दृश्यों का उपयोग कर सकते हैं। उदाहरण के लिए, यह सेटिंग बोल्ड रेड में प्रदर्शित करने के लिए कम बताती है जब उसे बोल्ड में प्रदर्शित करने का निर्देश दिया जाता है:

LESS_TERMCAP_md=$(tput md; tput AF 1)

या यदि आपका tputकमांड नाम का समर्थन नहीं करता है:

LESS_TERMCAP_md=$(tput bold; tput setaf 1)

मैन कुछ बहुत ही सरल प्रारूपण के साथ पाठ भेजता है जो केवल बोल्ड और इटैलिक व्यक्त कर सकता है। इसके अलावा, लेस अपने आंतरिक उपयोग के लिए विभिन्न स्वरूपण क्षमताओं का उपयोग करता है, जैसे कि खोज परिणामों को उजागर करने और तल पर मोड लाइन प्रदर्शित करने के लिए। भागने के कुछ अनुक्रम यहां दिए गए हैं जो कम उपयोग करता है (मैं केवल उन क्षमताओं को सूचीबद्ध करता हूं जो इसे रीमैप करने के लिए काफी उपयोगी है):

termcap terminfo  
ks      smkx      make the keypad send commands
ke      rmkx      make the keypad send digits
vb      flash     emit visual bell
mb      blink     start blink
md      bold      start bold
me      sgr0      turn off bold, blink and underline
so      smso      start standout (reverse video)
se      rmso      stop standout
us      smul      start underline
ue      rmul      stop underline

रंग में आउटपुट दिखाने के लिए, setafक्षमता (या AFटर्मकैप के साथ) का उपयोग करें।

LESS_TERMCAP_*सेटिंग्स में वर्णित नहीं हैं LESSप्रलेखन। सबसे अच्छा संदर्भ जो मैं पेश कर सकता हूं वह मेरा उत्तर है


8
धन्यवाद। मैंने कम के स्रोत कोड को भी संक्षिप्त रूप से देखा और पाया कि जब आप LESS_TERMCAP_DEBUG को किसी चीज़ पर सेट करते हैं और तब आदमी को खोलते हैं तो आप मैन पेजों के स्रोत की तरह कुछ देख सकते हैं और इसमें वे सभी क्षमता टैग हैं जिनका उपयोग किया जाता है। यह तय करना आसान बनाता है कि आप उन्हें क्या सेट करना चाहते हैं।
एसेलम

1
एस्केप चार्ट के बजाय सभी env var सेट करने के तरीके के बारे में यह उत्तर देखें । LESS_TERMCAP_*tput
कौशल मोदी

3

गिलेस का उत्तर उत्कृष्ट है, लेकिन इसने मुझे जिज्ञासु बना दिया:

टर्मकैप मोटे तौर पर अप्रचलित है, जिसे टर्मिनफो द्वारा बदल दिया गया है

  1. अगर टर्मकैप अप्रचलित है, तो मैं टर्मिनेटो में स्विच करना चाहता हूं

  2. मैं भी टर्मकैप से दूर जाना चाहता हूं क्योंकि मुझे एक बग मिला है। कहो कि आप अपने ~/.profileया इससे मिलते-जुलते शब्द का वैरिएबल रखते हैं :

    export LESS_TERMCAP_so=$(printf '\33[5;30;43m')
    export LESS_TERMCAP_se=$(printf '\33[m')
    

    उसके बाद यदि आप प्रवेश करते हैं set, तो टर्मपैक चर आपके रंग आउटपुट को गड़बड़ कर देते हैं।

Terminfo पर स्विच करने के लिए, आप एक फ़ाइल बना सकते हैं xterm-pretty.ti:

xterm-pretty|xterm with pretty colors,
# exit standout mode
  rmso=\e[m,
# begin standout mode
  smso=\e[5;30;43m,
# similar terminal
  use=xterm,

फ़ाइल संकलित और स्थापित करें:

tic xterm-pretty.ti

~/.profileया इसके समान रेखा जोड़ें :

TERM=xterm-pretty
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.