कैसे एक शब्द को हटाने और विम में डालने मोड में जाने के लिए?


98

सामान्य मोड में मैं Ctrl+ हिट कर सकता हूंE जो शेष वर्तमान शब्द को हटा देता है और सम्मिलित मोड में चला जाता है।

मैं कर्सर की स्थिति (पाठ्यक्रम के शब्द के भीतर) की परवाह किए बिना पूरे शब्द को हटाना चाहता हूं।

जवाबों:


164

आप अपने कर्सर को चालू करने वाले शब्द को हटाने के लिए "civ" लिखकर "आंतरिक शब्द बदलें" का उपयोग कर सकते हैं।

"इनर" और "ए" कमांड विम में महान हैं, एक {} ब्लॉक, या "सीए {" के अंदर "ci {" का भी प्रयास करें यदि आप {} वर्णों को भी हटाना चाहते हैं। उन्हें बेहतर याद रखने के लिए इन आदेशों का अंग्रेजी में अनुवाद करने के लिए, कोशिश करें: "आंतरिक {ब्लॉक" और "एक {ब्लॉक" बदलें।

पर प्रलेखन http://vimdoc.sourceforge.net/htmldoc/motion.html#text-objects


"civ" का उपयोग "civ" समान कार्यक्षमता के स्थान पर किया जा सकता है।
अमजीत

जबकि 'caw' और 'ciw' पूरे शब्द को बदल देगा, बस 'cw' वर्तमान कर्सर स्थिति से वर्तमान शब्द के अंत तक बदल जाएगा।
ड्रू स्टीफंस ने

मैंने उत्तर को "co {" के बारे में बताने से लेकर "ca {" के रूप में संपादित किया जैसा कि jinxed_coders टिप्पणी द्वारा याद दिलाया गया है। मेरा पुराना अनुकूलन लागू होता है "(ए) <>" कमांड के रूप में "(ओ) बाहरी <>" आदेश।
काली

19
ciwऔर cawबिल्कुल समान नहीं हैं: ciwकेवल शब्द को cawहटाता है , साथ ही अनुगामी स्थान को भी हटाता है।
रॉबर्टो बोनावलेट सेप

5
: इन प्रकार के चयनों के बारे में अधिक पढ़ने के लिए वस्तुओं की मदद करें
हारून

19

अपने अनुवर्ती प्रश्न का उत्तर दें: viwp

v    -> start visual mode
iw   -> select the 'inner word'
p    -> paste - in visual mode it replaces the visually selected text.

3
यह एक पंक्ति में कई बार कैसे होगा? हर बार जब आप पेस्ट करते हैं, तो बफर मेरे द्वारा चिपकाए गए शब्द से भर जाता है।
बेन गार्टनर

1
@BenGartner को यह Vim Tips विकी में मिला : yiwवर्तमान शब्द की प्रतिलिपि बनाने के लिए, शब्द पर कर्सर रखें, उपयोग करने के लिए ciw<C-r>0। उसके बाद आप कर्सर को अगले शब्द पर रख सकते हैं और .प्रतिस्थापन को फिर से करने के लिए उपयोग कर सकते हैं।
सीगी

@BenGartner तो तुम सब करने की कोशिश कर रहे हैं, WORD_B साथ WORD_A के सभी उदाहरणों की जगह है, तो आप बस vim की पूर्व मोड का उपयोग है :%s/a/b/gaसटीक पाठ, या एक नियमित अभिव्यक्ति हो सकती है, और bवह है जिसके साथ आप सभी मिलानों को बदल देंगे a। आप विम के /मोड के साथ रेगेक्स का परीक्षण कर सकते हैं । %यदि आप सभी लाइनों पर स्थानापन्न नहीं करना चाहते हैं तो एक पंक्ति संख्या या सीमा के साथ बदलें ।
ब्रैडेन बेस्ट

8

दूसरे प्रश्न के लिए: bPldw

यह, आदेश में, आपको वर्तमान शब्द की शुरुआत में ले जाएगा, कर्सर के सामने डिफ़ॉल्ट रजिस्टर डालें, अगले चरित्र पर जाएं (आपके द्वारा डाले गए पाठ के अंत में पिछले हिस्से को लेते हुए), और बाकी को हटा दें शब्द।


5
यह शब्द के बाद के स्थान को भी हटा देता है। होना चाहिए bPlde
0x89

10
नहीं, होना चाहिएviwp
aehlke

3

पहले प्रश्न के लिए bcwभी काम करें। इसका अर्थ है " bशब्द की शुरुआत के लिए cऐक , हैंग wऑर्ड"। लेकिन मुझे लगता ciwहै कि यह और अधिक यादगार है, जिसका अर्थ है " cहेंगे iननर। "w ऑर्ड", सिर्फ एक कदम।

"पेस्ट का उपयोग करने की जगह" के बारे में दूसरे प्रश्न के लिए, मेरा समाधान है "_diwP। यह dहटाएं inner word के लिए एक रजिस्टर आप देखभाल और नहीं है pडिफ़ॉल्ट रजिस्टर की सामग्री Aste। एक फायदा यह है कि आप डिफ़ॉल्ट रजिस्टर को कई बार चिपका सकते हैं, क्योंकि यह प्रदूषित नहीं होगा। यह एक लिट्टी कॉम्प्लेक्स है इसलिए मैं इसे मैप करता हूं nnoremap ,r "_diwP


2

या, आप bdwiवर्तमान शब्द को हटाने और INSERT मोड में जाने के लिए मुख्य अनुक्रम का उपयोग कर सकते हैं।


1
आप bcwवर्तमान शब्द की शुरुआत में जाने के लिए उपयोग कर सकते हैं फिर शब्द को बदल सकते हैं, जो आपको सम्मिलित मोड छोड़ देता है।
हांक गे

यदि आपका कर्सर पहले से ही शब्द के पहले अक्षर पर है, तो यह पिछले शब्द को हटा देगा।
वारेन पेना

3
@WarrenPena उस मामले में, बस उपयोग करें dwi। बस सावधान रहें कि पुलिस ध्यान नहीं देती, क्योंकि अधिकांश राज्यों में DWI अवैध है।
ब्रैडेन बेस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.