विम: कैसे कई लाइनों के अंत में पाठ का एक ब्लॉक पेस्ट करने के लिए?


32

कहो कि मेरे पास इस तरह का पाठ है:

// टिप्पणी 1
// टिप्पणी २
// टिप्पणी 3

और मैं इन पंक्तियों में से प्रत्येक को कोड के 3 संगत लाइनों के अंत में जोड़ना चाहता हूं:

फू = 1;
बार = 2;
बाज = ३;

ताकि अंतिम परिणाम हो

फू = 1; // टिप्पणी 1
बार = 2; // टिप्पणी २
बाज = ३; // टिप्पणी 3

क्या विम में ऐसा करने का एक आसान तरीका है?


@ फैली, दुर्भाग्य से नहीं। समय-समय पर आपकी तरह की टिप्पणियां विम प्रश्नों में दिखाई देती हैं, लेकिन इसे देखें: meta.stackexchange.com/q/25925/160504
sidyll

इस प्रश्न के लिए बेहतर समुदाय vi.stackexchange.com
thinwybk

जवाबों:


36

दृश्य ब्लॉक मोड (का प्रयोग करें Ctrl+ vतो या तो लाइनों, के एक सेट का चयन करने के लिए) yया dउन्हें।

फिर, यदि आपने foo, bar, baz लाइनों का चयन किया है, तो टिप्पणी लाइनों के पहले कॉलम का चयन करने के लिए फिर से दृश्य ब्लॉक मोड का उपयोग करें और फिर Shift+ pउन्हें जगह में (या यदि आपने टिप्पणी लाइनों का चयन किया है, तो foo बार baz के अंतिम कॉलम का चयन करें। लाइनों और pउन्हें जगह में।

पोजीशन का हैंग हो जाना थोड़ा सा अभ्यास हो सकता है, लेकिन जब आपको नॉक मिल गया है तो आप उड़ जाएंगे। जब आपको एक ब्लॉक चयनित हो जाता है तो आप Shift+ Aका उपयोग कर सकते हैं उदाहरण के लिए रिक्त स्थान को ब्लॉक करने के लिए (जब जोड़ते हैं, तो नया पाठ केवल शीर्ष पंक्ति में दिखाई देगा, लेकिन जब आप एस्क को मारते हैं तो यह सभी चयनित लाइनों में जादुई रूप से दिखाई देगा) । इसी तरह, प्रत्येक पंक्ति पर चयनित ब्लॉक की शुरुआत में Shift+ iवही करेगा।

आपको हालांकि बाद में खाली लाइनों को साफ करना होगा।

इन तकनीकों को और अधिक विस्तार से दिखाने के लिए एक बढ़िया विमोकास एपिसोड भी है


1
मुझे लगता है कि यह समाधान :set ve=allबहुत ही बहुमुखी है। मैं व्यक्तिगत रूप से बिना शर्त पेस्ट प्लगइन ( vim.org/scripts/script.php?script_id=3355 ) का उपयोग करता हूं क्योंकि यह मेरी जरूरत को थोड़ा बेहतर बनाता है।
पीटर रिंकेर

1

खैर, अगर यह आसान है या नहीं, तो आप मुझे बताएं। हटाने के लिए // Comment 1, हिट ddपर नेविगेट करें । लाइन के नीचे पेस्ट करने के लिए, foo = 1;हिट के साथ लाइन पर नेविगेट करें pfooफिर से ऊपर जाएं , और Jपंक्ति में शामिल होने के लिए हिट करें। टाडा।


0

निम्नलिखित वही करेगा जो आप वर्णन करते हैं:

:%s@\(\w\s\+=\s\+\(\d\+\)\)@\=submatch(1) . " // Comment" . submatch(2)@

वास्तव में आपको क्या करना चाहिए (उदाहरण के विपरीत) के आधार पर, व्यवहार में, "// Comment1" इत्यादि ब्लॉक ( Ctrlv), यैंक ( y) को ब्लॉक करने के लिए और अधिक सरल हो सकता है, कोड के अंत में जाएं। ब्लॉक और पेस्ट करें।

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