2012-03-01 9 views
9

मैं इस सवाल VI (VIM): delete/change right to left? यानी कि लाइन में = के अंतिम उदाहरण के लिए एक पंक्ति के अंत से हटाते हैं, जो dT= उपयोग किया जा सकता के साथ के लिए इसी तरह कुछ करना चाहता हूँ सहित अंत लाइन से हटा दें कर्सर लाइन के अंत में रखा गया।Vi/vim - अंतिम चरित्र

हालांकि यह और अन्य ऐसे आदेश लाइन के अंतिम चरित्र को नहीं हटाते हैं, इसलिए मुझे उस आदेश में x जोड़ना होगा। मुझे ऐसा करने में कोई फर्क नहीं पड़ता, फिर भी यह आश्चर्य की बात है कि विम के पास वर्तमान चरित्र से हटने का आदेश नहीं होगा। क्या कोई ऐसा है जिसे मैं अभी नहीं ढूंढ पाया है?

उत्तर

8

अगर अपने कर्सर पंक्ति के अंत में है, तो आप

F=D 

ओह, नोटिस नहीं किया था ओ पी '=' रखना चाहता है कि कोशिश कर सकते। फिर:

T=D 
+1

टी = डी रखने = – BenjaminGolder

+0

@BenjaminGolder हां, धन्यवाद उनका कहना है के लिए, उससे पहले नोटिस नहीं किया जाएगा। – Kent

+0

बिल्कुल सही धन्यवाद! –

0

T=d$ का उपयोग करने के बारे में क्या? क्या इससे काम हो जायेगा?

3

वैकल्पिक रूप से, आप कर सकते हैं:

set virtualedit=onemore 

यह आपको लाइन के अंत से परे कर्सर को एक characer को स्थानांतरित करने देगा। उस स्थिति से, dT= आपकी अपेक्षा के अनुसार काम करेगा।

0

एक विकल्प :set virtualedit=onemore है, जैसे आप कर सकते हैं: $dT=

:help 've' पर संदर्भ।

+1

असल में मुझे लगता है कि आपको लाइन और एक चरित्र के अंत में जाने के लिए '$ l' की आवश्यकता है। – jcollado

+0

हम्म, शायद हां। सुधार के लिए धन्यवाद। – Benoit

0

थोड़ा और अधिक मजबूत, लेकिन अधिक शक्तिशाली - मुझे यकीन नहीं है कि क्या आप एक समय में एक पंक्ति करना चाहते हैं, या बहुत ... नियमित अभिव्यक्ति को प्रतिस्थापित करें।

single line: 
^    # go to beginning of line 
:s/=[^=]*$/=/ # remove everything after = 

whole file: 
:%s/=[^=]*$/=/gc # replace every instance in file, with prompts. remove c for no prompt. 
संबंधित मुद्दे