विम संपादक में लाइनों के एक सेट के लिए व्हाट्सएप हटाएं


12

मेरे पास फ़ाइल में निम्नलिखित जैसा कुछ पाठ है:

  sample text
    some random text
            even more random text
text with no indent
 worst indention

मुझे प्रत्येक पंक्ति से पहले खाली स्थान को हटाना होगा। एक लाइन के लिए मैं क्या करता हूं 0dw

मैं उसी कमांड का उपयोग करके दोहरा सकता हूं। लेकिन मैन्युअल रूप से अगली पंक्तियों में नेविगेट करके।

लेकिन क्या लाइनों के उन ब्लॉक पर '0dw' लागू करने का कोई तरीका है?

मुझे लगता है कि मैक्रोज़ का उपयोग करने का एक तरीका है, लेकिन मैंने उन्हें पहले इस्तेमाल नहीं किया है। लेकिन मैं उन्हें सीखने के लिए तैयार हूं अगर कोई अन्य विकल्प नहीं है।


+1 अच्छा प्रश्न, मैं एक ही चीज़ का एक बहुत कुछ कर रहा हूं। और साइट पर आपका स्वागत है।
सरथ्रियन - एसई दुरुपयोग के खिलाफ

जवाबों:


10
:%s/^\s\+
" Same thing (:le = :left = left-align given range):
:%le

Http://vim.wikia.com/wiki/Remove_unwanted_spaces पर यहां और जानें

यदि आप लाइनों की एक विशेष श्रेणी के लिए ऐसा करना चाहते हैं:

:19,25s/^\s\+//

BTW, vim सीखना शुरू करने का सबसे अच्छा तरीका vimtutorकमांड निष्पादित करना है , यह आपको सिखाएगा कि विम संपादक में Vim का उपयोग कैसे करें।


1
: le कमाल था और विकल्प और लिंक के लिए बहुत बहुत धन्यवाद :)
saiy2k

3
Vimtutor उल्लेख के लिए +1 और साथ ही एक अच्छा उत्तर।
सारथ्रियन - एसई दुरुपयोग के खिलाफ

1
Vलाइन चयन का विस्तार करने के लिए कर्सर का उपयोग और स्थानांतरित करके प्रासंगिक लाइनों का चयन करें। फिर :स्वचालित रूप से दर्ज करने के लिए दबाएं '<,'>, और वहां से आप निखिल के regexp का उपयोग कर सकते हैं।
अंकलजीव

1
लाइनों की एक श्रृंखला करने का एक और तरीका (क्योंकि मैं हमेशा रेखा संख्या भूल जाता हूं) 2 रेखाओं को चिह्नित करना और निशान पर काम करना है। उदाहरण के लिए, लाइन 19 पर जाएं और 'ma' दबाएं, पंक्ति 25 पर जाएं और 'mb' दबाएं, फिर करें :'a,'bs/^\s\+//
पैट्रिक

7

ऐसा करने का एक वैकल्पिक तरीका है वीआईएम के इंडेंटेशन टूल्स (आमतौर पर </ के लिए बाध्य >) का उपयोग करना। पहले आपको यह इंगित करने के लिए किसी तरीके की आवश्यकता है कि कौन सी लाइनें प्रभावित होंगी। आप दृश्य चयन मोड या प्रभावित होने वाली रेखाओं की एक श्रृंखला निर्दिष्ट करने के किसी अन्य साधन का उपयोग कर सकते हैं, फिर निकालने के लिए मनमाने ढंग से उच्च संख्या या इंडेंटेशन स्तर का उपयोग कर सकते हैं। 9<आमतौर पर करंट लाइन (एस) से कम इंडेंटेशन (टैब / स्पेस) के कम से कम 9 स्तरों को हटाने के लिए चाल काफी अच्छी तरह से होती है।


3

मुझे सरल निम्नलिखित चरणों में ऐसा करने के लिए दृष्टिकोण मिला है:

1. press `v` to go to visual selection mode
2. select the lines you want to affect
3. :'<,'>normal 0dw

तीसरे चरण की व्याख्या:

0 लाइन की शुरुआत करने के लिए नेविगेट करता है।

dw शब्द (रिक्त स्थान) हटाता है।

normalआदेश को लागू करता है 0dw

'<,'> दृश्य मोड में सभी चयनित लाइनों के लिए सामान्य दोहराता है।


1

ctrl+vआप जैसा चाहते हैं वैसा ही कर सकते हैं, लेकिन बिल्कुल नहीं। आप एक दृश्य ब्लॉक का चयन कर सकते हैं और एक कमांड को बहुत से लगा सकते हैं।


2
'<,'> सामान्य 0dw: मैं ब्लॉक मोड में उन पंक्तियों का चयन किया और इस आदेश का काम किया:
saiy2k

1
@ saiy2k :normalयहाँ महत्वपूर्ण बात है, और मुझे लगता है कि यह यहाँ सबसे अच्छा जवाब है। क्या आप इसे उत्तर के रूप में पोस्ट कर सकते हैं?
गाइल्स का SO- बुराई पर रोक '23:
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.