कम और संपादन में पाइपिंग: "मानक इनपुट को संपादित नहीं कर सकता" त्रुटि। समाधान?


9

मुझे हाल ही में पता चला है कि अगर मैं अपनी फाइलों के साथ पेज करता हूं less, तो मैं vEmacs में बफर दबा सकता हूं और खोल सकता हूं । यह तब तक काम करता है जब तक कि मेरे पास पर्यावरण चर $EDITORसही तरीके से स्थापित नहीं हो जाता है, जो मेरे मामले में मेरे पास है:

export EDITOR='env TERM=xterm-256color emacs -nw'

उपरोक्त मुझे चलाने वाले टर्मिनल के भीतर emacs लोड करने की क्षमता देता है less

हालाँकि, ऊपर की चाल तब काम नहीं करती है जब पाइपिंग कमांड को करती है less। ऐसा करते समय, lessनिम्न संदेश के साथ शिकायत करता है:

Cannot edit standard input (press RETURN)

मेरा सवाल यह है कि ऐसा क्यों होता है? लेकिन सबसे महत्वपूर्ण बात यह है कि क्या इसमें कोई वर्कअराउंड है ?


2
आपको यह सीखना चाहिए कि कैसे emacsclient का उपयोग करना है , जो आपको Emacs की पहले से चल रही कॉपी में फ़ाइलों को संपादित करने देगा। Emacs सबसे तेज़ शुरू करने वाला संपादक नहीं है।
cjm

आपने मेरा संपादन क्यों रोलबैक किया? क्या शीर्षक एक प्रश्न नहीं माना जाता है?
जॉन

1
क्षमा करें @ जॉन, मैंने आपका संपादन नहीं देखा। मैंने यह स्पष्ट करने के लिए शीर्षक को संपादित किया कि मैं इस समस्या के लिए वर्कअराउंड में ज्यादातर दिलचस्पी रखता हूं। मुझे लगता है कि शीर्षक जैसा है: Piping into less and editing: “cannot edit standard input” error. Workarounds?स्पष्ट है। अन्यथा क्यों सोचते हैं?
एमिलियो वाज़केज़-रीना

उस समझ में आने योग्य है। हालांकि मैं यह मानूंगा कि यदि आप पूछ रहे हैं कि आपको त्रुटि क्यों मिली, तो यह स्पष्ट होना चाहिए कि आप एक समाधान चाहते हैं।
जॉन

मैं सहमत हूं, हालांकि अब तक का सबसे अधिक वोट किया गया जवाब whyकेवल और केवल पते को संबोधित करता है workarounds, इसलिए मैंने जोर दिया।
अमेलियो वाज़केज़-रीना

जवाबों:


5

जैसा कि पहले ही कहा गया था, आप एक इनपुट स्ट्रीम संपादित नहीं कर सकते।

वर्कअराउंड काफी स्पष्ट है: स्ट्रीम को किसी फ़ाइल में से सहेजें lessऔर सहेजी गई फ़ाइल खोलें । देखने के दौरान ऐसा करने के लिए, sकिसी फ़ाइल का नाम दें और दबाएं । फिर या तो lessफ़ाइल से बाहर निकलें और हाथ से खोलें, या, अभी भी भीतर से lessटाइप करें :eऔर उस फ़ाइल का नाम दें जिसे आपने अभी सहेजा है।


15

एक अच्छा समाधान आपके संपादक से कम से आउटपुट को पाइप करना है, जैसे "गूंज फू | कम" के बाद आप कर सकते हैं:

g|$vim -

gफ़ाइल / इनपुट की पहली पंक्ति के लिए कूद |जाएगा, "पाइप" कार्रवाई को लागू करेगा, $निशान है ("अंत"), इसके बाद कमांड को सीमा में पाइप करने के लिए ( vim -इस मामले में, जहां "-" का अर्थ है स्टड से इनपुट पढ़ने के लिए)।


1
बहुत अच्छे धन्यवाद!
साइमन पिकअप

5

इसका ठीक वही अर्थ है जो उसने कहा था - आप केवल उस फ़ाइल को संपादित कर सकते हैं जो इस तरह से (से less) डिस्क पर है । यदि आपने किसी प्रक्रिया के आउटपुट को पाइप किया है, तो इसके STDOUTलिए जा रहा STDINहै less; संपादित करने के लिए कोई फ़ाइल नहीं है।

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