यूनिक्स / लिनक्स - vi संपादक ट्यूटोरियल
इस अध्याय में, हम समझेंगे कि कैसे यूआईएक्स में vi संपादक काम करता है। यूनिक्स में फ़ाइलों को संपादित करने के कई तरीके हैं। स्क्रीन ओरिएंटेड टेक्स्ट एडिटर का उपयोग करके फाइलों का संपादनviसबसे अच्छे तरीकों में से एक है। यह संपादक आपको फ़ाइल में अन्य पंक्तियों के संदर्भ में लाइनें संपादित करने में सक्षम बनाता है।
Vi संपादक का एक उन्नत संस्करण जिसे कहा जाता है VIMअब उपलब्ध भी करा दिया गया है। यहाँ, VIM का अर्थ हैVi IMसाबित कर दिया।
vi को आमतौर पर यूनिक्स संपादकों में वास्तविक मानक माना जाता है क्योंकि -
यह आमतौर पर यूनिक्स प्रणाली के सभी स्वादों पर उपलब्ध है।
इसके कार्यान्वयन बोर्ड भर में बहुत समान हैं।
इसके लिए बहुत कम संसाधनों की आवश्यकता होती है।
यह अन्य संपादकों जैसे की तुलना में अधिक उपयोगकर्ता के अनुकूल है ed या ex।
आप उपयोग कर सकते हैं viमौजूदा फ़ाइल को संपादित करने या खरोंच से एक नई फ़ाइल बनाने के लिए संपादक। आप इस संपादक का उपयोग केवल एक पाठ फ़ाइल को पढ़ने के लिए कर सकते हैं।
Vi संपादक शुरू करना
निम्न तालिका vi संपादक का उपयोग करने के लिए मूल आदेशों को सूचीबद्ध करती है -
| अनु क्रमांक। | कमांड और विवरण |
|---|---|
| 1 | vi filename एक नई फ़ाइल बनाता है अगर यह पहले से मौजूद नहीं है, अन्यथा एक मौजूदा फ़ाइल को खोलता है। |
| 2 | vi -R filename मौजूदा फ़ाइल को केवल-पढ़ने के लिए मोड में खोलता है। |
| 3 | view filename मौजूदा फ़ाइल को केवल-पढ़ने के लिए मोड में खोलता है। |
निम्नलिखित एक नई फ़ाइल बनाने के लिए एक उदाहरण है testfile यदि यह पहले से ही वर्तमान कार्य निर्देशिका में मौजूद नहीं है -
$vi testfile
उपरोक्त कमांड निम्नलिखित आउटपुट उत्पन्न करेगा -
|
~
~
~
~
~
~
~
~
~
~
~
~
"testfile" [New File]
आप नोटिस करेंगे tilde(~) कर्सर का अनुसरण करने वाली प्रत्येक पंक्ति पर। एक टिल्ड एक अप्रयुक्त रेखा का प्रतिनिधित्व करता है। यदि कोई रेखा टिल्ड से शुरू नहीं होती है और रिक्त दिखाई देती है, तो एक स्थान, टैब, न्यूलाइन या कुछ अन्य गैर-देखने योग्य चरित्र मौजूद है।
अब आपके पास काम शुरू करने के लिए एक खुली फाइल है। आगे बढ़ने से पहले, आइए कुछ महत्वपूर्ण अवधारणाओं को समझें।
ऑपरेशन मोड
Vi संपादक के साथ काम करते हुए, हम आम तौर पर निम्नलिखित दो मोड में आते हैं -
Command mode- यह मोड आपको फाइलों को सहेजने, कमांड को निष्पादित करने, कर्सर ले जाने, काटने (यैंकिंग) और लाइनों या शब्दों को चिपकाने के साथ-साथ ढूंढने और बदलने जैसे प्रशासनिक कार्य करने में सक्षम बनाता है। इस मोड में, जो भी आप टाइप करते हैं उसे कमांड के रूप में व्याख्या की जाती है।
Insert mode- यह मोड आपको फाइल में टेक्स्ट डालने में सक्षम बनाता है। इस मोड में टाइप किया गया सब कुछ इनपुट के रूप में व्याख्या किया गया है और फ़ाइल में रखा गया है।
vi हमेशा में शुरू होता है command mode। पाठ दर्ज करने के लिए, आपको सम्मिलित मोड में होना चाहिए, जिसके लिए बस टाइप करेंi। इन्सर्ट मोड से बाहर आने के लिए, दबाएँEsc कुंजी, जो आपको कमांड मोड में वापस ले जाएगी।
Hint- यदि आप सुनिश्चित नहीं हैं कि आप किस मोड में हैं, तो Esc कुंजी को दो बार दबाएं; यह आपको कमांड मोड में ले जाएगा। आप vi संपादक का उपयोग करके एक फ़ाइल खोलें। कुछ वर्ण टाइप करके प्रारंभ करें और फिर अंतर समझने के लिए कमांड मोड पर आएं।
Vi से बाहर निकलना
Vi से बाहर निकलने का आदेश है :q। एक बार कमांड मोड में, कोलन टाइप करें, और 'q', उसके बाद रिटर्न। यदि आपकी फ़ाइल को किसी भी तरह से संशोधित किया गया है, तो संपादक आपको इसकी चेतावनी देगा, और आपको छोड़ने नहीं देगा। इस संदेश को अनदेखा करने के लिए, बिना बचत के vi से बाहर निकलने का आदेश है:q!। यह आपको किसी भी परिवर्तन को सहेजे बिना vi से बाहर निकलने देता है।
संपादक की सामग्री को सहेजने का आदेश है :w। आप उपरोक्त आदेश को छोड़ दिया आदेश के साथ जोड़ सकते हैं, या उपयोग कर सकते हैं:wq और वापस।
सबसे आसान तरीका है save your changes and exit viZZ कमांड के साथ है। जब आप कमांड मोड में हों, टाइप करेंZZ। ZZ कमांड उसी तरह काम करता है जैसे :wq आदेश।
यदि आप फ़ाइल के लिए कोई विशेष नाम निर्दिष्ट / बताना चाहते हैं, तो आप इसे निर्दिष्ट करने के बाद ऐसा कर सकते हैं :w। उदाहरण के लिए, यदि आप उस फ़ाइल को सहेजना चाहते थे जिसे आप किसी अन्य फ़ाइलनाम के रूप में काम कर रहे थेfilename2, आप टाइप करेंगे :w filename2 और वापस।
एक फ़ाइल के भीतर चल रहा है
अपने पाठ को प्रभावित किए बिना किसी फ़ाइल के भीतर घूमने के लिए, आपको कमांड मोड में होना चाहिए (Esc को दो बार दबाएं)। निम्न तालिका कुछ आदेशों को सूचीबद्ध करती है, जिनका उपयोग आप एक समय में एक वर्ण को स्थानांतरित करने के लिए कर सकते हैं -
| अनु क्रमांक। | कमांड और विवरण |
|---|---|
| 1 | k कर्सर को एक लाइन ऊपर ले जाता है |
| 2 | j कर्सर को एक लाइन नीचे ले जाता है |
| 3 | h कर्सर को बाएँ एक वर्ण स्थिति में ले जाता है |
| 4 | l कर्सर को सही एक वर्ण स्थिति में ले जाता है |
निम्नलिखित बिंदुओं को एक फ़ाइल के भीतर स्थानांतरित करने पर विचार करने की आवश्यकता है -
vi केस-संवेदी है। कमांड का उपयोग करते समय आपको पूंजीकरण पर ध्यान देने की आवश्यकता है।
Vi में अधिकांश कमांड आपके द्वारा कार्रवाई की जाने वाली संख्या को पूर्ववर्ती किया जा सकता है। उदाहरण के लिए,2j कर्सर स्थान के नीचे कर्सर को दो पंक्तियों में ले जाता है।
Vi में एक फ़ाइल के भीतर स्थानांतरित करने के कई अन्य तरीके हैं। याद रखें कि आपको कमांड मोड में होना चाहिए (press Esc twice)। निम्न तालिका फ़ाइल के चारों ओर जाने के लिए कुछ आदेशों को सूचीबद्ध करती है -
| अनु क्रमांक। | कमांड और विवरण |
|---|---|
| 1 | 0 or | एक पंक्ति की शुरुआत में कर्सर को इंगित करता है |
| 2 | $ एक पंक्ति के अंत में कर्सर को बताता है |
| 3 | w कर्सर को अगले शब्द पर ले जाता है |
| 4 | b कर्सर को पिछले शब्द में बदलता है |
| 5 | ( वर्तमान वाक्य की शुरुआत में कर्सर को इंगित करता है |
| 6 | ) कर्सर को अगले वाक्य की शुरुआत में देता है |
| 7 | E रिक्त सीमांकित शब्द के अंत में ले जाता है |
| 8 | { एक पैराग्राफ वापस ले जाता है |
| 9 | } एक पैराग्राफ को आगे बढ़ाता है |
| 10 | [[ एक सेक्शन वापस ले जाता है |
| 1 1 | ]] एक सेक्शन को आगे बढ़ाता है |
| 12 | n| स्तंभ पर ले जाता है n वर्तमान लाइन में |
| 13 | 1G फ़ाइल की पहली पंक्ति में ले जाता है |
| 14 | G फ़ाइल की अंतिम पंक्ति में ले जाता है |
| 15 | nG तक ले जाता है nth फ़ाइल की लाइन |
| 16 | :n तक ले जाता है nth फ़ाइल की लाइन |
| 17 | fc आगे बढ़ता है c |
| 18 | Fc वापस चला जाता है c |
| 19 | H स्क्रीन के शीर्ष पर ले जाता है |
| 20 | nH तक ले जाता है nth स्क्रीन के ऊपर से लाइन |
| 21 | M स्क्रीन के मध्य में ले जाता है |
| 22 | L स्क्रीन के नीचे ले जाएँ |
| 23 | nL तक ले जाता है nth स्क्रीन के नीचे से लाइन |
| 24 | :x बृहदान्त्र द्वारा पीछा किया गया कॉलन नंबर रेखा पर कर्सर को दर्शाएगा x |
नियंत्रण कमांड
नीचे दी गई तालिका में दिए गए कार्यों को करने के लिए नियंत्रण कुंजी के साथ निम्न आदेशों का उपयोग किया जा सकता है -
| अनु क्रमांक। | कमांड और विवरण |
|---|---|
| 1 | CTRL+d 1/2 स्क्रीन को आगे बढ़ाता है |
| 2 | CTRL+f एक पूर्ण स्क्रीन को आगे बढ़ाता है |
| 3 | CTRL+u पीछे की ओर 1/2 स्क्रीन चलती है |
| 4 | CTRL+b एक पूर्ण स्क्रीन पीछे ले जाता है |
| 5 | CTRL+e स्क्रीन को एक पंक्ति में ले जाता है |
| 6 | CTRL+y स्क्रीन को एक पंक्ति नीचे ले जाता है |
| 7 | CTRL+u स्क्रीन को 1/2 पृष्ठ तक ले जाता है |
| 8 | CTRL+d स्क्रीन को 1/2 पेज नीचे ले जाता है |
| 9 | CTRL+b स्क्रीन को एक पृष्ठ ऊपर ले जाता है |
| 10 | CTRL+f स्क्रीन को एक पृष्ठ नीचे ले जाता है |
| 1 1 | CTRL+I स्क्रीन को फिर से दिखाता है |
फाइलों का संपादन
फ़ाइल को संपादित करने के लिए, आपको इंसर्ट मोड में होना चाहिए। कमांड मोड से इन्सर्ट मोड डालने के कई तरीके हैं -
| अनु क्रमांक। | कमांड और विवरण |
|---|---|
| 1 | i वर्तमान कर्सर स्थान से पहले पाठ सम्मिलित करता है |
| 2 | I वर्तमान लाइन की शुरुआत में पाठ सम्मिलित करता है |
| 3 | a वर्तमान कर्सर स्थान के बाद पाठ सम्मिलित करता है |
| 4 | A वर्तमान पंक्ति के अंत में पाठ सम्मिलित करता है |
| 5 | o कर्सर स्थान के नीचे पाठ प्रविष्टि के लिए एक नई लाइन बनाता है |
| 6 | O कर्सर स्थान के ऊपर पाठ प्रविष्टि के लिए एक नई लाइन बनाता है |
वर्ण हटाना
यहां एक महत्वपूर्ण कमांड की सूची दी गई है, जिसका उपयोग खुली फाइल में वर्णों और रेखाओं को हटाने के लिए किया जा सकता है -
| अनु क्रमांक। | कमांड और विवरण |
|---|---|
| 1 | x कर्सर स्थान के अंतर्गत वर्ण हटाता है |
| 2 | X कर्सर स्थान से पहले वर्ण हटाता है |
| 3 | dw वर्तमान कर्सर स्थान से अगले शब्द तक हटाता है |
| 4 | d^ वर्तमान कर्सर स्थिति से पंक्ति की शुरुआत तक हटाता है |
| 5 | d$ वर्तमान कर्सर स्थिति से पंक्ति के अंत तक हटाता है |
| 6 | D कर्सर की स्थिति से वर्तमान रेखा के अंत तक हटाता है |
| 7 | dd कर्सर जिस लाइन पर है उसे हटाता है |
जैसा कि ऊपर उल्लेख किया गया है, vi में अधिकांश कमांड उस समय की संख्या से पूर्ववर्ती हो सकते हैं, जिस समय आप कार्रवाई करना चाहते हैं। उदाहरण के लिए,2x कर्सर स्थान के अंतर्गत दो वर्णों को हटाता है और 2dd कर्सर को दो पंक्तियों को हटाता है।
यह अनुशंसा की जाती है कि हम आगे बढ़ने से पहले कमांड का अभ्यास करें।
कमांड बदलें
आपके पास उन्हें हटाने के बिना vi में वर्ण, शब्द या रेखाएं बदलने की क्षमता भी है। यहां प्रासंगिक आदेश दिए गए हैं -
| अनु क्रमांक। | कमांड और विवरण |
|---|---|
| 1 | cc आपको सम्मिलित मोड में छोड़कर, लाइन की सामग्री को निकालता है। |
| 2 | cw कर्सर शब्द को कर्सर से निचले सिरे पर बदल देता है w शब्द का अंत। |
| 3 | r कर्सर के नीचे वर्ण को प्रतिस्थापित करता है। vi प्रतिस्थापन के बाद कमांड मोड में वापस आता है। |
| 4 | R वर्तमान में कर्सर के नीचे चरित्र के साथ शुरू होने वाले कई वर्णों को ओवरराइट करता है। तुम्हें अवश्य उपयोग करना चाहिएEsc ओवरराइटिंग को रोकने के लिए। |
| 5 | s आपके द्वारा लिखे गए चरित्र के साथ वर्तमान चरित्र को बदल देता है। बाद में, आपको इन्सर्ट मोड में छोड़ दिया जाता है। |
| 6 | S कर्सर जिस लाइन पर है उसे हटाता है और उसे नए टेक्स्ट से बदल देता है। नया पाठ दर्ज करने के बाद, vi आवेषण मोड में रहता है। |
कॉपी और पेस्ट कमांड
आप एक स्थान से लाइनों या शब्दों को कॉपी कर सकते हैं और फिर आप उन्हें निम्न आदेशों का उपयोग करके किसी अन्य स्थान पर पेस्ट कर सकते हैं -
| अनु क्रमांक। | कमांड और विवरण |
|---|---|
| 1 | yy वर्तमान लाइन की प्रतिलिपि बनाता है। |
| 2 | yw शब्द के अंत तक, चरित्र को लोअरकेस w कर्सर से वर्तमान शब्द कॉपी करता है। |
| 3 | p कर्सर के बाद कॉपी किए गए टेक्स्ट को डालता है। |
| 4 | P कर्सर से पहले yanked पाठ डालता है। |
उन्नत कमांड
कुछ उन्नत आदेश हैं जो दिन-प्रतिदिन के संपादन को सरल बनाते हैं और vi के अधिक कुशल उपयोग के लिए अनुमति देते हैं -
| अनु क्रमांक। | कमांड और विवरण |
|---|---|
| 1 | J वर्तमान लाइन को अगले एक के साथ जोड़ता है। J कमांड्स की एक गिनती कई लाइनों में मिलती है। |
| 2 | << वर्तमान लाइन को एक पाली चौड़ाई से बाईं ओर शिफ्ट करें। |
| 3 | >> वर्तमान लाइन को एक शिफ्ट चौड़ाई द्वारा दाईं ओर शिफ्ट करता है। |
| 4 | ~ कर्सर के नीचे चरित्र के मामले को स्विच करता है। |
| 5 | ^G वर्तमान फ़ाइल नाम और स्थिति दिखाने के लिए एक ही समय में Ctrl और G कुंजियाँ दबाएँ। |
| 6 | U वर्तमान लाइन को उस स्थिति में पुनर्स्थापित करता है जब यह कर्सर लाइन में प्रवेश करने से पहले था। |
| 7 | u यह फ़ाइल में किए गए अंतिम परिवर्तन को पूर्ववत करने में मदद करता है। टाइपिंग 'यू' फिर से परिवर्तन को फिर से करेगा। |
| 8 | J वर्तमान लाइन को अगले एक के साथ जोड़ता है। एक गिनती कई रेखाओं से जुड़ती है। |
| 9 | :f फ़ाइल में वर्तमान स्थिति और फ़ाइल का नाम, फ़ाइल की कुल संख्या प्रदर्शित करता है। |
| 10 | :f filename फ़ाइल नाम के लिए वर्तमान फ़ाइल का नाम बदलता है। |
| 1 1 | :w filename फ़ाइल नाम दर्ज करने के लिए लिखता है। |
| 12 | :e filename फ़ाइल नाम के साथ एक और फ़ाइल खोलता है। |
| 13 | :cd dirname वर्तमान कार्य निर्देशिका को dirname में परिवर्तित करता है। |
| 14 | :e # दो खुली फ़ाइलों के बीच टॉगल। |
| 15 | :n यदि आप vi का उपयोग करके कई फाइलें खोलते हैं, तो उपयोग करें :n श्रृंखला में अगली फ़ाइल पर जाने के लिए। |
| 16 | :p यदि आप vi का उपयोग करके कई फाइलें खोलते हैं, तो उपयोग करें :p श्रृंखला में पिछले फ़ाइल पर जाने के लिए। |
| 17 | :N यदि आप vi का उपयोग करके कई फाइलें खोलते हैं, तो उपयोग करें :N श्रृंखला में पिछले फ़ाइल पर जाने के लिए। |
| 18 | :r file वर्तमान पंक्ति के बाद फ़ाइल को पढ़ता है और सम्मिलित करता है। |
| 19 | :nr file फ़ाइल को पढ़ता है और पंक्ति के बाद इसे सम्मिलित करता है n। |
वर्ड और कैरेक्टर सर्चिंग
Vi संपादक की दो प्रकार की खोजें हैं: string तथा character। एक स्ट्रिंग खोज के लिए,/ तथा ?आदेशों का उपयोग किया जाता है। जब आप इन आदेशों को शुरू करते हैं, तो बस टाइप की गई कमांड को स्क्रीन की अंतिम पंक्ति पर दिखाया जाएगा, जहां आप देखने के लिए विशेष स्ट्रिंग टाइप करते हैं।
ये दोनों आदेश केवल उस दिशा में भिन्न होते हैं जहाँ खोज होती है -
/ कमांड फ़ाइल में (नीचे की ओर) खोज करता है।
? कमांड फाइल में पीछे (ऊपर की ओर) सर्च करता है।
n तथा Nकमांड पिछले खोज कमांड को क्रमशः या विपरीत दिशा में दोहराते हैं। कुछ पात्रों के विशेष अर्थ होते हैं। इन पात्रों को एक बैकस्लैश से पहले होना चाहिए (\) खोज अभिव्यक्ति के भाग के रूप में शामिल किया जाना है।
| अनु क्रमांक। | चरित्र विवरण, चारित्रिक व्यौरा, वर्णन, व्याख्या |
|---|---|
| 1 | ^ पंक्ति की शुरुआत में खोजें (खोज अभिव्यक्ति की शुरुआत में उपयोग करें)। |
| 2 | . एकल चरित्र से मेल खाता है। |
| 3 | * पिछले चरित्र के शून्य या अधिक मेल खाता है। |
| 4 | $ पंक्ति का अंत (खोज अभिव्यक्ति के अंत में उपयोग करें)। |
| 5 | [ मिलान या गैर-मिलान अभिव्यक्तियों का एक सेट शुरू करता है। |
| 6 | < इसे एक शब्द के अंत या शुरुआत को खोजने के लिए बैकस्लैश के साथ बच गए एक अभिव्यक्ति में रखा गया है। |
| 7 | > यह देखने में मदद करता है '<'ऊपर वर्ण वर्णन। |
वर्ण खोज आदेश के बाद दर्ज किए गए वर्ण को खोजने के लिए एक पंक्ति में खोज करता है। f तथा F कमांड केवल वर्तमान लाइन पर एक वर्ण की खोज करता है। f आगे की खोज और F पीछे की ओर खोज करता है और कर्सर पाया गया वर्ण की स्थिति में चला जाता है।
t तथा T कमांड केवल वर्तमान लाइन पर एक वर्ण की खोज करता है, लेकिन इसके लिए t, कर्सर चरित्र से पहले की स्थिति में चला जाता है, और T चरित्र के बाद की स्थिति में लाइन को पीछे की ओर खोजता है।
कमांड सेट करें
आप निम्न का उपयोग करके अपने vi स्क्रीन के रूप और स्वरूप को बदल सकते हैं :setआदेशों। एक बार जब आप कमांड मोड में होते हैं, टाइप करें:set निम्नलिखित में से किसी भी आदेश के बाद।
| अनु क्रमांक। | कमांड और विवरण |
|---|---|
| 1 | :set ic खोज करते समय मामले को अनदेखा करें |
| 2 | :set ai ऑटोइंडेंट सेट करता है |
| 3 | :set noai ऑटिसेट को अनसेट करता है |
| 4 | :set nu बाईं ओर लाइन नंबर के साथ लाइनों को प्रदर्शित करता है |
| 5 | :set sw एक सॉफ्टवेयर टैबस्टॉप की चौड़ाई सेट करता है। उदाहरण के लिए, आप इस कमांड के साथ 4 की शिफ्ट चौड़ाई निर्धारित करेंगे -:set sw = 4 |
| 6 | :set ws यदि रैप्सकैन सेट है, और फ़ाइल के नीचे शब्द नहीं मिला है, तो यह शुरुआत में इसे खोजने की कोशिश करेगा |
| 7 | :set wm यदि इस विकल्प का मूल्य शून्य से अधिक है, तो संपादक स्वचालित रूप से "वर्ड रैप" होगा। उदाहरण के लिए, रैप मार्जिन को दो अक्षरों में सेट करने के लिए, आप इसे टाइप करेंगे::set wm = 2 |
| 8 | :set ro "केवल पढ़ने के लिए" फ़ाइल प्रकार बदलता है |
| 9 | :set term प्रिंट्स टर्मिनल प्रकार |
| 10 | :set bf डिस्क्स इनपुट से वर्णों को नियंत्रित करता है |
रनिंग कमांड्स
Vi संपादक के भीतर से कमांड चलाने की क्षमता रखता है। कमांड चलाने के लिए, आपको केवल कमांड मोड में जाना होगा और टाइप करना होगा:! आदेश।
उदाहरण के लिए, यदि आप जांचना चाहते हैं कि फ़ाइल फ़ाइल नाम के साथ सहेजने से पहले कोई फ़ाइल मौजूद है या नहीं, तो आप टाइप कर सकते हैं :! ls और आपको आउटपुट दिखाई देगा ls स्क्रीन पर।
आप अपने vi सत्र में वापस जाने के लिए किसी भी कुंजी (या कमांड के एस्केप अनुक्रम) को दबा सकते हैं।
पाठ की जगह
प्रतिस्थापन कमांड (:s/) आपकी फ़ाइलों के भीतर शब्दों या समूहों के शब्दों को जल्दी से बदलने में सक्षम बनाता है। पाठ को बदलने के लिए वाक्य रचना निम्नलिखित है -
:s/search/replace/g
gविश्व स्तर पर खड़ा है। इस कमांड का परिणाम यह है कि कर्सर की लाइन पर सभी घटनाएँ बदल जाती हैं।
नोट करने के लिए महत्वपूर्ण बिंदु
निम्नलिखित बिंदु vi के साथ आपकी सफलता में जोड़ देंगे -
कमांड का उपयोग करने के लिए आपको कमांड मोड में होना चाहिए। (यह सुनिश्चित करने के लिए कि आप कमांड मोड में हैं, किसी भी समय Esc को दो बार दबाएं।)
आपको कमांडों से सावधान रहना चाहिए। ये केस-संवेदी हैं।
पाठ दर्ज करने के लिए आपको सम्मिलित मोड में होना चाहिए।