टर्मिनल में सिंटैक्स हाइलाइटिंग


43

प्रोग्रामिंग-उन्मुख संपादकों के बहुत सारे स्रोत कोड को चित्रित करेंगे। क्या कोई कमांड है जो टर्मिनल में देखने के लिए स्रोत कोड को रंग देगा?

मैं एक फ़ाइल emacs -nw(जो एक नई विंडो को पॉप अप करने के बजाय टर्मिनल में खुलता है) के साथ खोल सकता था , लेकिन मैं कुछ ऐसी चीज़ की तलाश कर रहा हूं जो less(या इसके साथ काम करती हैless -R , जो इसके इनपुट में कलर एस्केप सीक्वेंस से गुजरती है)।

जवाबों:


66

highlightएक टर्मिनल के साथ जो एक ही रंग से बच दृश्यों का समर्थन करता है xterm:

highlight -O xterm256 your-file | less -R

के साथ ruby-rouge:

rougify your-file | less -R

के साथ python-pygments:

pygmentize your-file | less -R

GNU केsource-highlight साथ :

source-highlight -f esc256 -i your-file | less -R

आप स्क्रिप्ट के vimसहारे पेजर के रूप में भी उपयोग कर सकते हैं ( विवरण के लिए देखें):macros/less.shvim:h lessvim

मेरे सिस्टम पर:

sh /usr/share/vim/vim74/macros/less.sh your-file

या फिर आप वाक्यविन्यास highlighters के किसी भी इस्तेमाल कर सकते हैं कि समर्थन HTML आउटपुट और उपयोग elinksया w3mपेजर (या के रूप में elinks -dump -dump-color-mode 3 | less -R) के साथ की तरह जीएनयूsource-highlight :

source-highlight -o STDOUT -i your-file | elinks -dump -dump-color-mode 3 | less -R

हाइलाइट टेक्स्ट को SVG / HTML में बदल सकता है, जो बहुत ही रोमांचक है।
यूटोपिक ईएक्सप्रेस

14

मैं इसके लिए source-highlightसंयुक्त GNU का उपयोग करता हूं less -R। अपने शेल के आरंभीकरण फ़ाइल में निम्न पंक्तियाँ जोड़ें ( ~/.bashrcउदाहरण के लिए):

cless(){
 LESSOPEN='| source-highlight --failsafe --out-format=esc256 -o STDOUT -i %s 2>/dev/null ' less -R "$@"
}

भाषा के अनुसार स्वचालित रूप से रंग स्रोत कोड का उपयोग किया जाना चाहिए और, यदि यह नहीं हो सकता है, तो यह lessसीधे अपने इनपुट पर लॉन्च करेगा ।


6

यदि आप रंगों में lessअधिक रुचि रखते हैं , तो आप देखना चाहते हैं lesspipe.sh। उदाहरण के लिए देखें, http://freecode.com/projects/lesspipe

lesspipe.sh पेजर के लिए एक इनपुट फ़िल्टर है जैसा कि कम मैन पेज में वर्णित है। स्क्रिप्ट एक ksh- संगत शेल (उदाहरण के लिए bash, zsh) के तहत चलती है और आपको द्विआधारी सामग्री, संपीड़ित फ़ाइलें, अभिलेखागार और अभिलेखागार में मौजूद फ़ाइलों के साथ फ़ाइलों को देखने के लिए कम उपयोग करने की अनुमति देता है।

यह एक पाठ संपादक के समान शेल स्क्रिप्ट, पर्ल स्क्रिप्ट आदि को भी रंग देगा, लेकिन रंगाई करने के लिए किसी भी "प्रीप्रोसेसिंग" प्रोग्राम के उपयोग के बिना।


धन्यवाद! मुझे लगता lesspipe.shहै कि मैं सवाल पोस्ट करने से पहले क्या याद करने की कोशिश कर रहा था ...
एलेक्सिस

2

मुझे सादगी पसंद है और मैं नैनो पाठ संपादक का उपयोग करता हूं, इस मामले में मैं आमतौर पर अनुसरण के रूप में आगे बढ़ता हूं:

चेक डायन सिंटैक्स हाइलाइट उपलब्ध है: ls -la /usr/share/nano/

निम्नलिखित आदेश के साथ, या मैन्युअल रूप से करके इसे मेरी nanorc फ़ाइल में शामिल करें

echo 'include /usr/share/nano/sh.nanorc' >> ~/.nanorc

के बारे में lessमैं इस पृष्ठ पर एक नज़र देने का सुझाव देता हूं


0

स्टीफन चेज़लस के सुझाव के अनुसार , मैं highlightशो सिंटैक्स हाइलाइट का उपयोग करने के लिए एक बैश फ़ंक्शन करता हूं , इसे .bashrc या इतने पर डाल देता हूं । यह महान, तेज और प्रभावी काम करता है।

s(){ highlight --force -O ansi $1 | /usr/bin/less -R; }

हाइलाइट समर्थन 202 भाषा सिंटैक्स प्रारूप । देखते हैं highlight --list-scripts=langs


0

आप पैकेज, e2ansi का उपयोग कर सकते हैं , जो कि जैसे पेजर्स के लिए सिंटैक्स हाइलाइटिंग समर्थन प्रदान करता है moreऔर less

पैकेज सभी पाठ संपादकों की माँ का उपयोग करता है, Emacs , वास्तविक वाक्यविन्यास हाइलाइटिंग करने के लिए। एक अतिरिक्त बोनस के रूप में, Emacs द्वारा सामान्य रूप से प्रदर्शन की जाने वाली अन्य सभी रूपांतरण - जैसे कि फाइलों को अनकैप्स करना - भी किया जाता है।

उदाहरण

निम्नलिखित एक फ़ाइल को देखने का उपयोग कर का परिणाम है lessऔर e2ansi:

उदाहरण

विन्यास

पैकेज कमांड-लाइन टूल प्रदान करता है e2ansi-catजो एमएसीएस को बैच मोड में शुरू करता है, फाइलें खोलता है, सिंटैक्स उन्हें हाइलाइट करता है, और एएनएसआई अनुक्रमों का उपयोग करके परिणाम प्रदान करता है।

lessउदाहरण के लिए, निम्न चर को सेट करके आप इसे एकीकृत कर सकते हैं (आपकी इनिट फ़ाइल का स्थान भिन्न हो सकता है):

export "LESSOPEN=||-/usr/local/emacs --batch -Q -l ~/.emacs -l bin/e2ansi-cat %s"
export "LESS=-r"
alias "more=less -X -E"

उपरोक्त कॉन्फ़िगरेशन में, lessमूल टर्मिनल विंडो सामग्री को पुनर्स्थापित करता है , जबकि moreप्रॉम्प्ट के बाद बस नई सामग्री का उत्पादन करता है।

नोट: यदि आप किसी पुराने संस्करण का उपयोग करते हैं less, तो यह ||या -वाक्यविन्यास का समर्थन नहीं कर सकता है , जिस स्थिति में आपको बस उपयोग करने की आवश्यकता हो सकती है LESSOPEN=|/usr/local/emacs ...

lessपाइप में उपयोग करना

"-" वर्ण LESSOPENइंगित करता है कि इनपुट फ़िल्टर का उपयोग पाठ को पाइप करते समय भी किया जाना चाहिए less। इस मामले में, Emacs केवल पाठ पर ही भरोसा कर सकते हैं (और फ़ाइल नाम नहीं)। सौभाग्य से, Emacs इसके लिए एक प्रणाली प्रदान करता है। इसके अलावा, प्रदान की गई फ़ाइल फ़ाइल e2ansi-magic.elअतिरिक्त फ़ाइल प्रकार सेट करती है। उदाहरण के लिए:

पाइप का उदाहरण

क्यों Emacs का उपयोग करें?

  • Emacs के पास लगभग सभी प्रोग्रामिंग भाषाओं और संरचित पाठ प्रारूपों के लिए समर्थन है। ज्यादातर मामलों में, सिंटैक्स हाइलाइटिंग समर्थन उत्कृष्ट है।
  • आप अधिक भाषाओं और स्वरूपों के लिए आसानी से समर्थन जोड़ सकते हैं, या अपनी ज़रूरत के अनुसार मौजूदा पैकेजों को संशोधित कर सकते हैं।
  • Emacs कलर थीम को सपोर्ट करता है। उपयोग करते समय e2ansi, किसी फ़ाइल को देखने के दौरान थीम में रंगों को संरक्षित किया जाता है less। आप कई स्रोतों से उपयुक्त रंग विषय चुन सकते हैं, या अपना स्वयं का डिज़ाइन बना सकते हैं।
  • यदि आप अपनी पसंद के संपादक के रूप में Emacs का उपयोग करते हैं, तो आपको संपादक के रूप में वही हाइलाइटिंग मिलेगी, जब आप एक फ़ाइल का उपयोग करते समय मिलते हैं less(ANSI अनुक्रम प्रारूप में शून्य सीमाएं और टर्मिनल विंडो)।
  • lessस्वचालित रूप से रूपांतरण करने वाली Emacs सुविधाओं का लाभ उठाएंगे, उदाहरण के लिए फ़ाइलों को अनलॉक्ड करना। वास्तव में, आप एमएसीएस को किसी भी प्रकार के रूपांतरण को करने के लिए सिखा सकते हैं जैसे कि एक बाहरी उपकरण का उपयोग करके द्विआधारी फ़ाइल को मानव पठनीय रूप में स्वचालित रूप से परिवर्तित करना।
  • आप दूरस्थ पहुंच के लिए Emacs के सिंटैक्स का उपयोग करके अन्य मशीनों पर स्थित फ़ाइलों को देख सकते हैं /USER@HOST:FILENAME

उपयोगी कड़ियाँ

  • e2ansiMelpa पर वितरित किया जाता है और मानक Emacs पैकेज सिस्टम का उपयोग करके स्थापित किया जा सकता है
  • e2ansiGitHub पर होस्ट किया गया है
  • e2ansiपर पेज Emacs विकी
  • का घर less

ऑपरेटिंग सिस्टम नोट

  • MS Windows पर, कंसोल मूल रूप से ANSI दृश्यों का समर्थन नहीं करता है। सौभाग्य से, lessएप्लिकेशन उन्हें प्रदान करने में सक्षम है। मुझे lessएमएस विंडोज के लिए किसी भी समकालीन बाइनरी वितरण के बारे में पता नहीं है और प्रदान की गई फ़ाइलों का उपयोग करना मुश्किल है। सौभाग्य से, सीएमके का lessउपयोग करके निर्माण करना आसान है , विवरण के लिए इस पाठ को देखें।

  • OS X एक प्राचीन संस्करण वितरित करता है less। सौभाग्य से, स्रोत से सीधे आधुनिक संस्करण का निर्माण करना आसान है।


-2

इसे वाक्य रचना हाइलाइटिंग कहा जाता है।

जीएनयू स्रोत-हाइलाइट जब एक स्रोत फ़ाइल दी जाती है, तो सिंटैक्स हाइलाइटिंग के साथ एक दस्तावेज़ पैदा करता है।

मैं lessfilterनीचे दी गई स्क्रिप्ट का उपयोग करता हूं , या आप lessइसे स्वचालित रूप से इनवॉइस की तरह बना सकते हैं :

export LESSOPEN="| /path/to/lessfilter %s"
export LESS=' -R '

मुझे यह लेख मिला और इस तरह से करना शुरू किया:

#!/bin/sh
file -b -L "$1" | grep -q text &&
  /usr/share/source-highlight/src-hilite-lesspipe.sh "$1"

( src-hilite-lesspipe.shके साथ भेज दिया है source-highlightलेकिन सभी वितरण यह शामिल हैं)


4
"यदि आप लेख पर जाते हैं तो लेखक को मैक का उपयोग करना चाहिए क्योंकि वह अपने आदेशों के लिए राजधानियों का उपयोग करता है": मुझे डर है कि आप थोड़ा भ्रमित हैं: स्पष्ट रूप से आप जानते नहीं हैं कि exportएक पर्यावरण चर को परिभाषित करता है, न कि एक उपनाम। आदेश less वातावरण चर से झंडे का उपयोग करता LESSहै, तो आपका जवाब कुछ काम की जरूरत है।
एलेक्सिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.