2012-11-15 10 views
5

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

+0

बीटीडब्ल्यू, मुझे बस कोडर के बारे में पता चला। यह रूबी आधारित है और इसके कमांड लाइन प्रोग्राम pygmentize से बहुत तेज है। –

+1

एक और विकल्प होगा [जीएनयू स्रोत-हाइलाइट] (http://www.gnu.org/software/src-highlite/source-highlight.html)। मैं [कम] के साथ रंग पाने के लिए इसका उपयोग करता हूं (http://superuser.com/a/71593/79870)। –

+0

@RandyMorris: हाँ, इसके लिए एक सीपीएएन मॉड्यूल भी है (मेरा प्रोग्राम पर्ल-आधारित है)। एकमात्र समस्या यह है कि निर्भरता काफी बड़ी है (सीपीएएन मॉड्यूल बनाने के लिए स्रोत-हाइलाइट और इसके देव पुस्तकालयों को स्थापित करना लगभग 100 एमबी डेबियन पैकेज खींचता है)। –

उत्तर

1

Emacs एक समारोह htmlfontify कहा जाता है कि HTML करने के लिए एक fontified बफर में परिवर्तित कर देंगे भी शामिल है। आप इसे HTML के रूप में फ़ाइल प्रस्तुत करने के लिए बैच मोड में एक छोटी elisp स्क्रिप्ट के साथ उपयोग कर सकते हैं। उदाहरण के लिए:

emacs -q --batch --file myfile.rb --eval '(progn (require (quote htmlfontify)) (htmlfontify-buffer) (set-buffer-modified-p t) (save-buffer))' 
+0

धन्यवाद। खेद है कि यह स्पष्ट नहीं किया गया है, इसलिए मुझे एएनएसआई एस्केप अनुक्रमों में इसकी आवश्यकता है क्योंकि मैं टर्मिनल पर आउटपुट कर रहा हूं। मेरा EmacsLisp-fu गंभीर रूप से सीमित है, लेकिन आपने मुझे खेलने के लिए कुछ पॉइंटर्स दिए हैं। –

2

तरह Emacs (। सीपी ataylor का जवाब), विम पूरा वाक्य रचना HTML को उजागर करने के साथ एक बफर प्रदान कर सकते हैं; :help 2html.vim देखें। आप शायद प्लगइन का कोड है कि बफर के वाक्य रचना के माध्यम से चला जाता है की बहुत फिर से इस्तेमाल कर सकते हैं, और एएनएसआई भागने दृश्यों के रेंडर करने के लिए इसे बदलने के लिए, लेकिन आप खुद ही सब प्रतिपादन तर्क को फिर से लागू करना होगा।

हालांकि कुछ plugins है कि एक पेजर के रूप विम रोजगार देखते हैं, मुझे नहीं लगता कि यह संभव है बस एएनएसआई भागने दृश्यों के साथ बफर उत्पादन के लिए विम उपयोग करने के लिए है। आखिरकार, विम टर्मिनल पर नियंत्रण रखना चाहता है, और बाहर निकलने पर इसे साफ़ करता है।

मैं, एक और, विम बाहर समर्पित समाधान के लिए देखने के लिए सुझाव देते हैं, हालांकि आप इसे स्थापित करने की जरूरत का मतलब है कि चाहते हैं।

1

आप @IngoKarkat सलाह का पालन करें और मानक प्लगइन को फिर से लिखने एएनएसआई एस्केप अनुक्रम तुम मेरे formatvim प्लगइन का उपयोग कर सकते हैं का समर्थन करने के लिए नहीं करना चाहते हैं, तो यह

Format format csi to /path/to/file 

का उपयोग करके एएनएसआई एस्केप अनुक्रम को प्रतिपादन समर्थन करता है। शुरुआत में मेरी प्लगइन एक नए प्रारूप के आसान जोड़ के साथ विभिन्न प्रारूपों के समर्थन के लिए मानक 2 एचटीएमएल लक्ष्यीकरण का एक पुनर्लेख था (मैंने एएनएसआई एस्केप अनुक्रम समर्थन जोड़ने के लिए लगभग 30 मिनट बिताए, ज्यादातर इन अनुक्रमों के विनिर्देश को पढ़ते हुए), लेकिन वर्तमान कोड बहुत दूर चला गया है समानता का जिक्र करें। यह बड़ी फ़ाइलों के लिए तेजी से काम करने के लिए जाना जाता है या जब आप vim का एक उदाहरण का उपयोग फ़ाइलों की एक संख्या प्रस्तुत करने के लिए (अर्थात जब वार्मअप ("संकलन" और कैश भरने) चरण आगे रन के लाभ के नीचे दब जाता है)।

4

संपादक पहले से ही एएनएसआई सामान, बल्कि संपादक का एक स्क्रीन पर कब्जा नहीं बनाने के लिए, आसान कर सकते हैं के रूप में?

script -qc "stty rows 10000 
emacs -nw -visit YOURFILE.YAML -eval '(redisplay t)' -f kill-emacs 
resize" 

(पुन: प्रदर्शित केवल जीएनयू FSF Emacs के लिए आवश्यक है)

अब कब्जा

perl -p0E 's/\A(?s:.*)\e\[27m\r\n 
\e\[A\n((?s).*?) 
(?:\e\[K\n)+ 
\e.*\e\[27m\r$(?s:.*)\Z/$1/mx' < typescript 

को साफ आप रिकॉर्डिंग प्रक्रिया स्क्रीन पर दिखाई नहीं करना चाहते हैं, तो आप इसे लपेट कर सकते हैं एक छिपे टर्मिनल में जैसे कि पर्ल के आईओ :: पीटी

+0

अच्छी चाल! यद्यपि समस्या के लिए थोड़ी अधिक मात्रा में। धन्यवाद। –

4

मैथ्यू वोजनिस्की ने vimcat.sh नामक एक स्क्रिप्ट लिखी जो विम के साथ करता है। उनका संस्करण https://github.com/godlygeek/vim-files/blob/master/macros/vimcat.sh पर है। मैंने इसमें कुछ संशोधन किए हैं (यदि मेमोरी परोसा जाता है, तो संशोधनों ने इसे अपने मैक ओएस एक्स सिस्टम पर चलाने की अनुमति दी; मुझे पता है कि /proc/self/fd/9 के लिए उस उद्देश्य का था); https://gist.github.com/4090959 पर मेरी जिस्ट देखें।

मेरा मानना ​​है कि स्क्रिप्ट के दोनों संस्करणों में डिफ़ॉल्ट पृष्ठभूमि रंग पर लौटने में समस्या है यदि विम की हाइलाइटिंग पृष्ठभूमि को बदलती है।

संबंधित मुद्दे