2009-09-04 8 views
86

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

कर्सर की स्थिति (पाठ्यक्रम के भीतर) के बावजूद, मैं पूरा शब्द हटाना चाहता हूं। इसके अलावा - मैं वर्तमान शब्द को डिफ़ॉल्ट रजिस्टर में जो कुछ भी बदल सकता हूं?

उत्तर

146

आप अपने कर्सर पर एक शब्द को हटाने के लिए "ciw" टाइप करके "आंतरिक शब्द बदलें" का उपयोग कर सकते हैं।

"आंतरिक" और "ए" कमांड विम में महान हैं, तो {} ब्लॉक, या "ca {" के अंदर "ci {" को भी आजमाएं, यदि आप भी {} अक्षर को हटाना चाहते हैं। इन आदेशों को अंग्रेजी में बेहतर तरीके से याद रखने के लिए, कोशिश करें: "आंतरिक {ब्लॉक" बदलें और "{ब्लॉक" बदलें। http://vimdoc.sourceforge.net/htmldoc/motion.html#text-objects

+0

"caw" का उपयोग "ciw" के समान कार्यक्षमता के स्थान पर किया जा सकता है। – Amjith

+0

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

+0

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

8

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

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

+5

यह शब्द के बाद भी स्थान हटा देता है। 'बीपीएलडी 'होना चाहिए। – 0x89

+9

नहीं, 'viwp' – aehlke

2

पर

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

+1

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

+0

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

+3

@WarrenPena उस मामले में, बस 'dwi' का उपयोग करें। बस सावधान रहें कि पुलिस नोटिस नहीं करते हैं, क्योंकि अधिकांश राज्यों में डीडब्ल्यूआई अवैध है। –

18

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

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

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

+1

@ बेन गर्टनर ने इसे [विम टिप्स विकी] पर पाया (http://vim.wikia.com/wiki/Replace_a_word_with_yanked_text#Alternate_method): वर्तमान शब्द की प्रतिलिपि बनाने के लिए 'yiw' का उपयोग करें, कर्सर को प्रतिस्थापित करने के लिए शब्द पर रखें,' सीवी 0'। इसके बाद आप कर्सर को अगले शब्द पर रख सकते हैं और प्रतिस्थापन को फिर से करने के लिए '.' का उपयोग कर सकते हैं। – siegi

+0

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

2

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

"पेस्ट का उपयोग करके प्रतिस्थापित करें" के बारे में दूसरे प्रश्न के लिए, मेरा समाधान "_diwP है। यह d elete i nner w एक ऐसे रजिस्टर के लिए ord जिस पर आपको परवाह नहीं है और p डिफ़ॉल्ट रजिस्टर की सामग्री को पूरा करता है। एक फायदा यह है कि आप कई बार डिफ़ॉल्ट रजिस्टर पेस्ट कर सकते हैं, क्योंकि यह प्रदूषित नहीं होगा। यह एक लिट कॉम्प्लेक्स है इसलिए मैं इसे nnoremap ,r "_diwP के रूप में मैप करता हूं।

संबंधित मुद्दे