vim: कई लाइनों के लिए पहले 2 रिक्त स्थान हटाएं


79

VIM का उपयोग करके प्रत्येक पंक्ति के पहले 2 स्थानों को हटाने का सबसे आसान तरीका क्या है? मूल रूप से यह प्रत्येक पंक्ति के लिए "2x" दोहरा रहा है।

स्पष्टता: यहाँ यह धारणा है कि पहले 2 अक्षर रिक्त स्थान हैं। तो सवाल एक साथ कई लाइनों के लिए इंडेंटेशन करने का है।


क्या यह विशेष रूप से सफेद स्थान है, या पहले दो वर्णों की परवाह किए बिना कि वे क्या हैं?
जेसन डाउन

यह पहले दो अक्षर हैं। प्रथम दो वर्ण मानकर रिक्त स्थान हैं।
ट्विमो

मैंने इसे खोज के माध्यम से करने और पूर्व संपादक मोड में बदलने का एक तरीका दिखाया है। एक तरीका यह गारंटी देता है कि यह केवल दो स्थानों से शुरू होने वाली लाइनों के लिए ही करेगा (और केवल दो रिक्त स्थान को हटा देगा)। दूसरे सिर्फ पहले दो वर्णों की परवाह किए बिना कि वे क्या हैं।
जेसन डाउन

विम प्रश्न एसओ (मेटा पर चर्चा की जांच, और ... एसओ सामान्य प्रश्न) पर विषय नहीं हैं। इसके अलावा खरोज है विकास के लिए प्रासंगिक ...
ल्यूक Hermitte

जवाबों:


93

कुछ और विकल्प। आप तय कर सकते हैं कि "सबसे आसान तरीका" कौन सा है।

हर पंक्ति के पहले 2 वर्ण निकालें:

:%normal 2x

प्रत्येक पंक्ति के पहले 2 वर्ण निकालें, केवल तभी जब वे रिक्त स्थान हों:

:%s/^  /

ध्यान दें कि अंतिम स्लैश वैकल्पिक है, और केवल यहाँ है ताकि आप दो रिक्त स्थान देख सकें। स्लैश के बिना, यह केवल 7 अक्षर है, सहित :

हर पंक्ति के लिए इंडेंटेशन को बाईं ओर ले जाएँ:

:%normal <<

11
मुझे प्यार है कि विम में कुछ करने के 30 अलग-अलग तरीके हैं। इस तरह के सवाल उन चीजों को सामने लाते हैं जिनके बारे में आप कभी नहीं जानते थे। मुझे% सामान्य के बारे में कोई पता नहीं था।
जेसन डाउन

अंतिम डैश पर स्पष्टीकरण के लिए धन्यवाद। यह मददगार है।
रंजडिलन

1
मैं जोड़ता हूँ कि %संकेत का अर्थ है "दस्तावेज़ में प्रत्येक पंक्ति के लिए इस कमांड को निष्पादित करें, न कि केवल वर्तमान लाइन"। मुझे लगता है। इसके बारे में अधिक दस्तावेज नहीं मिल सकते हैं।
सामरोन

119
  1. Ctrl-V(या Ctrl-Qयदि आप Ctrl-Vपेस्ट के लिए उपयोग करते हैं) के साथ दृश्य ब्लॉक मोड दर्ज करें ;
  2. तीर के साथ हटाने के लिए क्षेत्र का चयन करें;
  3. फिर dचयनित क्षेत्र को हटाने के लिए दबाएं ।
  4. दबाएँ Esc

7
ctrl-v चयन करने के लिए कि किस वर्ण को निकालना है और फिर कट के लिए d है।
हेनरिक के

2
शीर्ष तारांकित उत्तर! :-)
निकोस एलेक्जेंड्रिस

यह मेरे सभी उपयोग में काम नहीं करता है, लेकिन लोगों के लिए कि यह काम करता है यह बहुत सुविधाजनक है और यह उस क्षेत्र की कल्पना करने में सक्षम होना अच्छा है जिसे आप वास्तव में करने से पहले हटा रहे हैं।
searchengine27

दृश्य ब्लॉक मोड के लिए अलग डिफ़ॉल्ट बाइंडिंग शायद? शायद पुराने यूनिक्स वितरण VI (वीआईएम के विपरीत) के बीच अंतर है।
टॉम केर

यह शायद सबसे आसान और सबसे समझदार जवाब है।
विलेम वैन केटविच

13

आप एक खोज और प्रतिस्थापित (पूर्व संपादक में, :चरित्र के माध्यम से एक्सेस ) का भी उपयोग कर सकते हैं :

कोई फर्क नहीं पड़ता कि क्या पहले दो वर्ण निकालें:

%s/^.\{2}//

पहले दो सफेद स्थान वर्ण निकालें (शुरुआत में होना चाहिए और दोनों को व्हाट्सएप होना चाहिए ... कोई भी पंक्ति जो उस मापदंड से मेल नहीं खाएगी:)

%s/^\s\{2}//

2
अंत में / जी शानदार है। आप प्रति पंक्ति केवल एक मैच कर रहे हैं।
भैंसले

imo यह एक बेहतरीन समाधान है
विक्टोरिया स्टुअर्ट


4

दो रिक्त स्थान, या दो वर्ण? ( 2xउत्तरार्द्ध करता है।)

:[range]s/^  //

प्रत्येक पंक्ति की शुरुआत में दो रिक्तियाँ हटाता है; संपूर्ण फ़ाइल के लिए इसका उपयोग %(समतुल्य 1,$) [range]करें।

:[range]s/^..//

प्रत्येक पंक्ति के पहले दो वर्णों को हटा देता है, चाहे वे कुछ भी हों। (ध्यान दें कि यह दो वर्णों को हटाता है , जरूरी नहीं कि दो स्तंभ हों ; एक टैब वर्ण को एक वर्ण के रूप में गिना जाता है)।

यदि आप वास्तव में कर रहे हैं तो इंडेंटेशन बदल रहा है, आप <इसे कम करने के लिए कमांड का उपयोग कर सकते हैं , या >इसे बढ़ाने के लिए कमांड का उपयोग कर सकते हैं । shiftwidthयह नियंत्रित करने के लिए सेट करें कि यह कितनी दूर तक बदलता है, जैसे

:set shiftwidth=2

3

मैं दो तरीकों में से एक कोशिश करूँगा:

  1. Ctrl+V(अक्सर मैप किए गए Ctrl+Q) का उपयोग करके हटाने के लिए ब्लॉक पर कॉलम संपादन करें ।
  2. पहली पंक्ति का उपयोग करके मैक्रो को रिकॉर्ड करें q1(या किसी अन्य संख्या / पत्र जिसे आप रिकॉर्डिंग रजिस्टर को निरूपित करना चाहते हैं), फिर उस मैक्रो को कई बार @1(मेरे पिछले उदाहरण का उपयोग करने के लिए ) पुन: उपयोग करें। इससे भी बेहतर, यह बताने के लिए एक पूर्ववर्ती संख्या का उपयोग करें कि कितने। 10@1उदाहरण के लिए, उस मैक्रो को 10 बार चलाने के लिए - यह, हालांकि, आपके द्वारा रिकॉर्ड किए गए पर निर्भर करता है - यदि वह प्रासंगिक है, तो कर्सर को रिवाइंड 0या एक लाइन ड्रॉप करना सुनिश्चित करें j

3

मैं यह भी जोड़ना चाहता हूं: विम के लिए इंडेंटेशन को कॉन्फ़िगर करना सीखें। फिर एक सिंपल gg=Gट्रिक करेंगे।

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