VI पर पंक्ति के अंत में कर्सर से हटाएं


301

मुझे पता है कि मैंने संभवतः अपने द्वारा पढ़े गए सभी VI दस्तावेज़ों में इसे एक लाख बार देखा है, लेकिन मैं कर्सर से लाइन कमांड के अंत तक डिलीट को खोजने के लिए प्रतीत नहीं कर सकता।


3
आपको यहां एक टाइपो मिला है - आप शीर्षक में "लाइन का अंत" कहते हैं, लेकिन प्रश्न में "शब्द का अंत"।
Cascabel

जवाबों:


449

कमांड dwवर्तमान कर्सर स्थिति से अगले शब्द चरित्र की शुरुआत तक हटा देगा। कमांड d$(नोट, यह एक डॉलर का संकेत है, 'S' नहीं) वर्तमान कर्सर स्थिति से वर्तमान लाइन के अंत तक हट जाएगा। Dके लिए एक पर्याय है d$


हाँ, मुझे पता है dw, लेकिन मुझे लगता है कि मैंने यह मान लिया था कि "इस पंक्ति के बाकी हिस्सों को हटाएं" कमांड होगी। उदाहरण के लिए मेरी लाइन है ip=|10.1.1.1साथ |कर्सर स्थान जा रहा है। क्या कोई कमांड है जो सभी को हटा देगा 10.1.1.1?
फाल्मरी

3
@Falmarri - मैं माफी मांगता हूं, मुझे आपके सवाल का गलत मतलब निकालना चाहिए था। इसके लिए एक कमांड है:d$
टोक

84
D (Shift + d) भी d $ का पर्याय है।
नेथ

5
@ और, काम को कर्सर से लाइन के अंत तक हटाना है। यदि आप इससे अधिक हटाने पर विचार करते हैं कि "काम कर रहे हैं", तो आप भी उपयोग कर सकते हैं :!rm -f %और फिर :q!। जो पूरी फाइल को डिलीट कर देता है।
वाइल्डकार्ड

2
@Amir बस उपयोग करें d^('d' + caret) ... मूल रूप से d + कोई भी वर्ण जो सामान्य रूप से मेरे विचार से कर्सर को ले जाएगा, लेकिन मैं खुद को विम सीख रहा हूं, इसलिए मैं उस पर गलत हो सकता हूं।
जेकड डीएस

41

दूसरों के रूप में उल्लेख किया है: आप उपयोग कर सकते हैं d$या D( shift- d) कर्सर की स्थिति से लाइन के अंत तक नष्ट करने के लिए।

क्या मैं आमतौर पर अधिक उपयोगी पाते है c$या C( shift- c) यह लाइन के अंत तक कर्सर की स्थिति से हटा दिए जाएँगे क्योंकि और [INSERT] मोड में डाल।


2
अच्छा !!! यह Dमेरी राय में, ज्यादातर लोगों के लिए बेहतर है , क्योंकि यह तब आपको पंक्ति के अंत में एक स्थान पर वापस नहीं ले जाता है।
एलिय्याह लिन

यह जवाब यहाँ नीचे सभी तरह क्यों छिपा है? यह वह कार्यक्षमता है जिसकी मुझे तलाश थी जब मैं यहां आया था।
15 मार्च को M_M

@ElijahLynn यह वैसे भी एक मुद्दा नहीं होना चाहिए। विम में डालने के दो मुख्य तरीके हैं i, aजो कर्सर से पहले आवेषण और कर्सर के बाद सम्मिलित करता है। यदि आपका कर्सर लाइन के अंत में है और आप लाइन के अंत में सम्मिलित करना चाहते हैं, तो आप बस उपयोग कर सकते हैं a
रेयान

1
लक्ष्य यह एक ऑपरेशन में करना है, दो नहीं। अतिरिक्त कुंजी स्ट्रोक = अतिरिक्त घर्षण।
एलिजा लिन

36

Vi के बारे में अच्छी चीजों में से एक इसकी तार्किक कमांड संरचना है। dएक गति कमांड के बाद d उस गति के लक्ष्य तक पहुंचता है। $लाइन के अंत तक जाती है (रेचक में) तो d$लाइन के अंत तक हटाता है। इसी तरह, वर्तमान शब्द eके nd पर wजाता है , और अगले w ऑर्ड की शुरुआत में चला जाता है ; इसलिए deवर्तमान शब्द के अंत को हटा देता है, और dwइसके बाद निम्न व्हाट्सएप को हटा देता है।


1
@ सर्जेल मैं <kbd>वास्तविक कुंजियों के लिए उपयोग करता हूं , कमांड अनुक्रमों के लिए नहीं। जैसे <kbd>Ctrl</kbd>+<kbd>C</kbd>, लेकिन d$
गाइल्स

@ गिल्स आप सही कह रहे हैं। मैंने अभी d ^ की कोशिश की है और यह कर्सर स्थिति से लाइन शुरू होने तक हटा दिया है।
ka3ak

मैंने हमेशा शब्दों को हटाने के लिए (d) elete (a) (w) ord का उपयोग किया है :)
Błażej Michalik

20

आप शायद डी का उपयोग करना चाहते हैं। कर्सर को उस पहले वर्ण पर ले जाएं जिसे आप हटाना चाहते हैं, फिर शिफ्ट-डी हिट करें। सब कुछ चला गया। दरअसल, यह डिफॉल्ट कट बफर में है, इसलिए आप इसे वापस P या P पेस्ट कर सकते हैं।

मैं डीपी का उपयोग करता हूं (लाइन के अंत तक हटाएं, फिर इसे वापस डालें), किसी अन्य लाइन के अंत में जाएं, फिर उसी टेक्स्ट को इस दूसरी पंक्ति के अंत में पेस्ट करने के लिए फिर से पी। कॉन्फ़िगरेशन फ़ाइलों में अद्भुत काम करता है, जहां आपको दो या अधिक स्थानों पर कुछ जटिल URL डालने की आवश्यकता होती है।


यह शायद एक न्यूनतम विम है जो वह वैसे भी उपयोग करता है।
पोलीमोन

0

मुझे लगता है कि एक इन्सर्ट मोड शॉर्टकट काम आ सकता है।

सम्मिलित मोड में, पंक्ति के अंत तक इसे बदलना बेहतर शुरू होगा (इसे अपने पर डालें ~/.vimrc):

inoremap <C-l> <C-o>C

तो तुम हो, के रूप में कहा गया है, Dसामान्य मोड और में Ctrl+ lडालने मोड में। जैसा कि आप देख सकते हैं Cकि आपके पास भी है जो लाइन के अंत तक बदलना शुरू कर देता है।

<C-o> ......... insert normal keystroke in insert mode

मैंने चुना है Ctrl- lक्योंकि lआपकी उंगलियों के नीचे है। Ctrl- kपहले से ही द्वि आलेख सम्मिलित करने के लिए प्रयोग किया जाता है।

मैं :h i_Ctrlकुछ मुफ्त कीबाइंडिंग के माध्यम से खोज रहा हूं , और यह वास्तव में बड़ी समस्या है जब यह क्रियाओं में प्रदर्शन करने के लिए नए शॉर्टकट बनाने की बात आती है।


0

कर्सर स्थिति के बाद से लाइनों की एक श्रृंखला को हटाने 3Dके लिए, पंक्ति के अंत तक कर्सर से हट जाएगा, साथ ही साथ अगली दो पंक्तियाँ पूरी तरह से (यानी, कर्सर स्थिति के बाद 3 पंक्तियों को हटा देती है)।

निम्न पाठ के लिए उदाहरण (कर्सर का प्रतिनिधित्व |),

If there's a cursor |in the line
here
we
go

कमांड का उपयोग 3Dआउटपुट करेगा:

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