2010-07-10 8 views
34

प्रत्येक पंक्ति के प्रारंभ और अंत में कुछ वर्ण जोड़ने का सबसे अच्छा तरीका क्या है? क्या यह विम, या किसी अन्य तरीके से किया जा सकता है?फ़ाइल में प्रत्येक पंक्ति के प्रारंभ और अंत में वर्ण जोड़ना

उत्तर

56

vim में, आप क्या कर सकते हैं

:%s/^\(.*\)$/"\1"/ 
  • s/regex/replace/ के लिए खोज n की जगह vim आदेश है।
  • % यह फ़ाइल
  • ^ और $ शुरू करने और पंक्ति के अंत में क्रमश: अर्थ है भर में लागू कर देता है।
  • (.*) बीच में सब कुछ कैप्चर करता है। ( और ) को विम रेगेक्स में भागने की आवश्यकता है।
  • \1 कैप्चर की गई सामग्री को दो उद्धरणों के बीच रखता है।
+0

धन्यवाद .. यह हवा की तरह काम करता है! और बहुत अच्छी व्याख्या के लिए फिर से धन्यवाद .. – Myth

+4

@Myth प्रत्येक पंक्ति के लिए इसे शीघ्र बनाने के लिए अंत में 'c' जोड़ें: आप y/n को \ n% s/^ \ (को प्रतिस्थापित या छोड़ने के लिए हिट कर सकते हैं। * \) $/"\ 1"/c' – Amarghosh

+0

बहुत आसान है .. क्या आप मुझे regx सीखने के लिए कुछ अच्छे संसाधनों के लिए इंगित कर सकते हैं? मुख्य विषय से मोड़ के लिए खेद है। – Myth

2

बेहतर util sed किया जाएगा

cat foo.txt | sed s/^\(.*\)$/"\1"/g 
43

सरल (विशेष रूप से यदि आप इसे स्क्रिप्ट की जरूरत है):

%s/.*/"&"

स्पष्टीकरण: डिफ़ॉल्ट रूप से, एक पैटर्न सबसे बड़ा के रूप में व्याख्या की है संभव मिलान, .* को पूरी लाइन के रूप में व्याख्या किया गया है, ^ और $ की आवश्यकता नहीं है। और \( ... \) पैटर्न के एक हिस्से को चुनने में उपयोगी हो सकता है, यह पूरे पैटर्न के लिए आवश्यक नहीं है, जिसे & प्रतिस्थापन में दर्शाया गया है। और किसी खोज या प्रतिस्थापन में अंतिम / की आवश्यकता नहीं है जब तक कि कुछ और नहीं चलता; हालांकि इसे छोड़कर आलस्य माना जा सकता है। (यदि हां, तो मैं आलसी हूं।)

+3

मुझे यह वास्तविक चिह्नित एवर से अधिक पसंद है, क्योंकि यह आसान है और मैं भी आलसी हूं :), 5 साल के बाद टिप्पणी छोड़ने के बारे में – ahsant

+0

रेगेक्स के विनिर्देशों को जानने के लिए पर्याप्त आलसी नहीं, इस विधि को समझाने के लिए समय निकालने की बहुत सराहना की गई । – shdobxr

3

%s का सुझाव देने वाले दो उत्तरों सही हैं, और मुझे उम्मीद है कि आप %s से प्यार करना सीखेंगे और अक्सर इसका इस्तेमाल करेंगे। लेकिन यदि आप अपने आप को टेक्स्ट के अन्य ब्लॉक को अक्सर घूमना चाहते हैं, तो surround.vim प्लगइन को देखने के लिए आप इसे अपने आप दे सकते हैं, जो आपको निम्नलिखित चार कीस्ट्रोक के साथ जो कुछ भी मांगता है, उसे करने की अनुमति देगा: yss" और कई अन्य हैं उपयोगी अंतर्निहित चारों ओर लक्षित लक्ष्य। उदाहरण के लिए, वर्तमान शब्द को डबल कोट्स के साथ घूमने के लिए: csw", और आसपास के सिंगल कोट्स को डबल कोट्स में बदलने के लिए: cs'"

surround.vim मेरे पसंदीदा विम प्लगइन्स में से एक है, और मैं इसे दैनिक उपयोग करता हूं।

+0

'yss" वास्तव में पांच कीस्ट्रोक है, यदि आप डबल कोट के लिए गिनते हैं .-) यह नियमित अभिव्यक्ति टाइप करने से अभी भी बहुत तेज़ है। –

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

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