2011-08-08 12 views
6

मैं पुनर्गठित टेक्स्ट फ़ाइलों को संपादित कर रहा हूं। मुझे अक्सर एक पंक्ति में "= -` ~" जैसे कुछ गुणकों को रखने की आवश्यकता होती है, और मैं चाहता हूं कि रेखा की लंबाई पिछली रेखा से मेल खाती हो। मैं इसे विम में कैसे करना चाहिए?मैं कैसे एक पंक्ति डाल सकता हूं जैसे "==========" जल्दी से vim

a long long title 
================= 

धन्यवाद!

उत्तर

6

कैसे yyp:s/./=/g के बारे में?

आप इसे किसी कुंजी पर मैप कर सकते हैं, उदा। :map <F5> yyp:s/./=/g<CR>

+1

यह सबसे अच्छा जवाब नहीं है, कृपया प्रतिस्थापन का उपयोग करने के बजाय चिपकने वाली रेखा को प्रतिस्थापित करने के लिए दृश्य मोड का उपयोग करके बेहतर समाधान के लिए नीचे देखें। –

+0

प्रतिस्थापन का उपयोग करने के बारे में क्या बुरा है? –

+0

इस स्थिति में यह अधिक है, इसे नियमित रूप से अभिव्यक्ति को लाइन पर प्रत्येक चरित्र पर लागू करने की आवश्यकता होती है। यह आपके वर्तमान खोज रजिस्टर को भी बदलता है, इसलिए अब आप किसी भी कारण से ** पूरे ** दस्तावेज़ को हाइलाइट करेंगे। यह लाइन की शुरुआत में किसी भी व्हाइटस्पेस से भी निपट नहीं पाएगा। –

2

मैं शिफ्ट बटन जितना संभव हो सके खोज से बचने के लिए yypver= का उपयोग करूंगा। यह निश्चित रूप से एक कुंजी के लिए मैप किया जा सकता है।

+0

बेशक [बैरी ब्राउन] (http://stackoverflow.com/questions/6978462/how-can-ia-put-a-line-like-quickly-in-vim/6978638# 6978638) सही है, केवल एक शब्द का मेरा परीक्षण मामला थोड़ा सा सरल था। – chelmertz

+2

ट्रोल करने का अर्थ नहीं है, लेकिन क्या आपका मतलब 'yypvr =' था? भावी पाठकों से भ्रम को रोकने के लिए। – sa125

+0

@ sa125: असल में मैंने नहीं किया, लेकिन निश्चित रूप से यह एक वैध समाधान है * यदि पंक्ति '\ s + '* – chelmertz

17

एक और है कि काम करेंगे:

yypv$r= 
+13

'yypVr =' थोड़ा छोटा है लेकिन एक ही तकनीक है। –

+2

@ रैंडी: 'वाईपीवीआर =' :-) – sidyll

+3

@ सिडिल वाई और वाई कीस्ट्रोक की संख्या समान है: पी। इसके अलावा, कई लोग 'nnoremap वाई y $ 'तो वाई डी और सी के साथ संगत है। –

0

जब कर्सर a long long line पर रखा गया है आप की तरह

:s/\(.*\)/\=submatch(1) . nr2char(13) . repeat('=', strlen(submatch(1)))/ 

आदेश में कुछ का उपयोग इसे और अधिक प्रतिस्थापन करने के लिए आसान बनाने के लिए कर सकता है, मैं था फिर मानचित्र का उपयोग करें:

nmap __ :s/\(.*\)/\=submatch(1) . nr2char(13) . repeat('=', strlen(submatch(1)))/ 

तो, आप उस रेखा को रेखांकित कर सकते हैं जहां कर्सर है __ टाइपिंग के साथ।

2

अपनी लाइन किसी भी पिछली श्वेत रिक्ति के बिना शुरू होता है:

Hello World  

सामान्य मोड:

वाईपीवीआर=

देता है:

Hello World 
=========== 

स्पष्टीकरण

वाई -> झटका पूरी पंक्ति, तरह yy
पी -> लाइन पेस्ट
वी -> दृश्य में पूरी लाइन का चयन लाइन मोड आर -> अगले गुणों के साथ सभी चयनों को प्रतिस्थापित करें एर
= -> चरित्र दूसरों

को बदलने के लिए यदि आप लाइन अग्रणी खाली स्थान के, जैसे हैं:

Hello World 

उपयोग:

वाईपीवी$आर=

देते:

Hello World 
    =========== 

हम, पंक्ति के अंत तक वी$ दृश्य चयन का उपयोग करें बल्कि वी का उपयोग कर लाइन पर सब कुछ का चयन करने के की तुलना में।

आपको रिक्त स्थान अनुगामी था आप जी_ आंदोलन का उपयोग पिछले गैर खाली स्थान के चरित्र को पाने के लिए कर सकते हैं।

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