2013-10-30 9 views
10

मैं एक कमांड पाइपलाइन में डाल सकता हूं जो कमांड लेना चाहता है जो कि विम की सिंटैक्स हाइलाइटिंग क्षमताओं के अनुसार रंग को अपने इनपुट में से बचता है।टेक्स्ट को रंगीन करने के लिए मैं पाइपलाइन में विम का उपयोग कैसे कर सकता हूं?

उदाहरण के लिए:

cat somefile.js | vim - <???> | less 

परिणामी पाठ होगा somefile.js की है, लेकिन colorized कैसे वर्तमान vim विन्यास में संपादक यह करना होगा के अनुसार।

यह मेरे लिए होता है कि यह संभव होना चाहिए। मैं मानता हूं कि वहां कोई उदाहरण नहीं है कि एक सनी आदमी वास्तव में उपयोगी पर कॉल कर सकता है, लेकिन इसका मतलब यह नहीं है कि कभी नहीं है।

+1

वहाँ एक है सॉफ़्टवेयर की विस्तृत विविधता जो यह करती है, pygmentize एक है। मैंने इसे कभी नहीं देखा है। – carlosdc

+0

एचआरएम .. [यह धागा] (http://stackoverflow.com/questions/3219479/vim-write-buffer-content-to-stdout), हालांकि कम मूल्यांकन किया गया है, ऐसा लगता है कि एक फ़िल्टर के रूप में vim का उपयोग करने का प्रयास करने का सुझाव है (अनिवार्य रूप से जो मैं यहां देख रहा हूं), जाने-जाने से सिर्फ एक बुरा विचार है। क्या यह सच है? क्या यह विचार सिर्फ एक गैर स्टार्टर है? आउट-ऑफ-द-बॉक्स सोच के लिए –

+2

+1। – steveha

उत्तर

4

मुझे लगता है कि आपके विचार में एक मूल दोष है: कि किसी ने कभी ऐसी चीज की अनुमति देने के बारे में सोचा नहीं।

स्पष्ट रूप से विम वाक्यविन्यास हाइलाइटिंग करने में सक्षम है। लेकिन मैं आपको एक आइसक्रीम शंकु शर्त दूंगा कि यदि आप पाठ को स्ट्रीम करने और संसाधित करने के लिए विम प्राप्त करने का प्रबंधन कर सकते हैं, तो आपको परिणाम पसंद नहीं आएंगे।

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

यदि विम यह नहीं देखता है कि आप पाठ को पाइप कर रहे हैं, तो यह संभवतः कर्सर-आंदोलन आदेश भेजने की संभावना है जिसे आप शायद अपने आउटपुट में नहीं चाहते हैं। यदि विम नोटिस करता है, तो यह केवल पाठ को पास करने की संभावना है, और सिंटैक्स-रंग नहीं है। केवल अगर विम वाक्यविन्यास-रंग करता है लेकिन कर्सर-आंदोलन सामग्री इंजेक्ट नहीं करता है तो आपका विचार काम करेगा।

आप इसे आजमा सकते हैं। यहाँ एक जवाब है कि vim के माध्यम से पाइपिंग सामान की चर्चा है:

Execute a command within Vim from the command line

लेकिन मैं कहता हूँ क्यों पाइप एक प्रोग्राम है जो डिजाइन किए हैं और पाठ के माध्यम से यह पहुंचाया है करने का इरादा था के माध्यम से अपने पाठ नहीं? पाइगल्स प्रत्येक प्रमुख प्रोग्रामिंग भाषा और मार्कअप प्रारूप को रंगीन कर सकते हैं।

http://pygments.org/

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

+1

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

+0

ठीक है, pygmentize बहुत अच्छा ठंडा है। मेरी इच्छा है कि यह बेहतर लेक्सर ऑटो-डिटेक्शन था, लेकिन फिर मैं एक प्रोजेक्ट का उपयोग कर सकता था .. –

1

टेक्स्ट :: विमकोलर नामक एक पर्ल मॉड्यूल है जिसे मैंने सुना है जो आप खोज रहे हैं।

http://search.cpan.org/dist/Text-VimColor/

लेकिन मुझे इस पूछना चलो: क्यों यह कम के माध्यम से जाना चाहते हैं? एक पूरी तरह से अच्छी फ़ाइल दर्शक के रूप में vim का उपयोग क्यों नहीं करें? view - केवल पढ़ने के लिए मोड में मानक इनपुट से पढ़ा जाएगा।

+0

विचार यह नहीं है कि यह विशेष रूप से 'कम' के माध्यम से जाता है, लेकिन मेरे पास कुछ ऐसा हो सकता है जो पाठ को हाइलाइट करने पर सिंटैक्स लागू करता है मैं इसे कमांड लाइन पर आगे संसाधित कर सकता हूं। जैसे, कहो, अगर मैं 'cat file.js करना चाहता हूं grep समारोह | ', यह मदद करता है अगर आसान पठनीयता के लिए मुझे हाइलाइटिंग दिखाता है। –

1

मेरे vim स्थापना पहले से ही एक vim पेजर/colorizer स्क्रिप्ट शामिल है, और यह पाया जा सकता है:

https://githucat /usr/share/vim/vim73/macros/{less.sh,less.vim} 

व्यक्तिगत रूप से, मैं https://github.com/rkitover/vimpager

जो vimcat है और vimpager, उपयोग कर रहा हूँ जो ऐसा करें जो आपको लगता है कि वे करते हैं।

0

यह हो सकता है के बाद

cat filename.sh | vim - -c 'syntax on; syn=bash' 

यह बदसूरत है कि तुम क्या कर रहे हैं, लेकिन आप यह उपनाम सकता है:

alias vim.sh="vim -c 'syntax on; syn=bash'" 

फिर इस तरह का उपयोग करें:

cat filename.sh | vim.sh - 
संबंधित मुद्दे

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