In Vim, can I "stream" the output of e.g. "w ! ruby" into a buffer, line by line as they're output? -
मैं वर्तमान में ऐसा कुछ कर रहा हूं:
redir = & gt; मी मूक डब्ल्यू! Ruby redir END new put = m यह रूबी कोड के रूप में वर्तमान बफर की सामग्री को निष्पादित करता है और आउटपुट को एक नए बफर में डालता है।
लेकिन अगर रूबी कोड
फिर 10 सेकंड के लिए कोई आउटपुट नहीं दिखेगा, फिर दोनों "स्टार्ट" "और" अंत "सभी एक ही बार में।
क्या बफ़र को आउटपुट को" स्ट्रीम "करने के लिए कोई रास्ता नहीं है, जो लाइन के अनुसार दिखाई देता है? ताकि मुझे "शुरुआत" दिखाई दे, तो 10 सेकंड बाद में मुझे "अंत" दिखाई देगा? अगर मैं सिर्फ
w करता है तो क्या होता है इसके समान! रूबी और कमांड लाइन के तहत आउटपुट को देखें।
<पी > विम वास्तव में मैं / हे इस तरह के लिए पुरातन का पर्दाफाश नहीं है, लेकिन आप एम्बेडेड भाषा इंटरफेस में से एक से यह कर सकते हैं यहां अजगर और का उपयोग कर एक स्केच है (रूबी समान लग सकता है; देखें)।:
अजगर & lt; & lt; में लाइन के लिए "" "वर्तमान बफर करने के लिए दिया शेल कमांड के आउटपुट linewise संलग्न करें।" "" पी = subprocess.Popen (cmd, stdout = subprocess.PIPE, खोल = सच): EOF आयात vim आयात उपप्रक्रिया डीईएफ़ output_lines_to_buffer (cmd) आईएआरएआर (पी.स्टडीउट.रेडलाइन, ''): vim.current.buffer.append (पंक्ति) vim.command ('redraw') EOF उपयोग करने के लिए: < > <कोड> पूर्व: अजगर output_lines_to_buffer ( 'मेरे आदेश')
यह केवल वर्तमान बफर के अंत तक उत्पादन की प्रत्येक पंक्ति में संलग्न कर देगा <कोड के रूप में,> मेरे आदेश इसे उत्सर्जन करता है आप इसकी आवश्यकता के आधार पर इनपुट और आउटपुट श्रेणियों का समर्थन करने के लिए इसे काफी सरलतापूर्वक विस्तारित कर सकते हैं।
Comments
Post a Comment