पूर्व मोड में विम उपयोगी है जब:
- आपको गैर-अंतःक्रियात्मक (स्क्रिप्ट के भाग के रूप में) फ़ाइलों के संपादन की आवश्यकता है।
- आपका कनेक्शन बहुत धीमा है या स्क्रीन आपके कार्यों के बाद अपडेट नहीं की गई है।
- मैपिंग और संक्षिप्तियाँ अक्षम हैं।
- सामान्य कुंजी जैसे कि Escapeया Controlठीक से काम नहीं करती है।
मूल रूप vi
से दृश्य विधा है, ex
इसलिए विम एक्ज़ मोड केवल ex
(वे अभी भी समान कोड चलाते हैं) का अनुकरण है , इसलिए यह ex
vi और इसके विपरीत से कमांड मोड में आना संभव है। वास्तव में दो मोड हैं: एक्स मोड ( vim -e
) और बेहतर एक्स मोड जो vi संगत एक्स-मोड ( vim -E
) की तुलना में अधिक उन्नत कमांड के लिए अनुमति देता है । देखें: एक्स मोड और बेहतर एक्स मोड के बीच क्या अंतर है?
पूर्व संपादकों के एक परिवार की जड़ है: edit
, ex
और vi
। पूर्व का एक सुपर सेट है ed
, जिसमें सबसे उल्लेखनीय विस्तार एक प्रदर्शन संपादन सुविधा है। पूर्व (1)
संपादन फ़ाइलें गैर सहभागी है सबसे आम उपयोग और के रूप में समान तरीके से यह उपयोग करने वाले लोगों sed
और awk
, लेकिन वे उन्मुख अधिक धारा रहे हैं कर रहे हैं - वे केवल समाप्त करने के लिए शुरू से ही आगे फ़ाइल को पढ़ने (वे कई लाइनों के साथ काम करने के लिए तैयार किया गया है नहीं कर रहे हैं ) जबकि vim
बफर ओरिएंटेड है - आप फ़ाइल में आगे और पीछे की ओर बढ़ सकते हैं जैसे कि आप इसे इतना शक्तिशाली बनाते हैं।
मूल रूप से:
sed
एक है एस tream प्रवर्तन निदेशालय itor, न कि एक फ़ाइल संपादक।
फिर भी, लोग फ़ाइलों को संपादित करने की कोशिश करने के लिए इसका दुरुपयोग करने लगते हैं और सच्चाई यह है कि यह फ़ाइलों को संपादित नहीं करता है। दूसरे इसके विकल्प जैसे कि इन-प्लेस ( -i
) गैर-मानक FreeBSD एक्सटेंशन हैं और अन्य ऑपरेटिंग सिस्टम पर उपलब्ध नहीं हो सकते हैं। इसलिए यदि आप गैरवाजिब कोड से बचना चाहते हैं, तो I / O ओवरहेड और खराब साइड इफेक्ट्स (जैसे कि सिम्बलिंक्स को नष्ट करना) आपको उपयोग करना चाहिए ex
जो कि मानक UNIX कमांड-आधारित संपादक (साथ में ed
) BashFAQ है ।
अन्य चीजें जो मुझे Ex मोड में उपयोगी लगती हैं, इसे एक खेल के मैदान ( python
कंसोल के समान ) के रूप में उपयोग करने के लिए है, जहां आप एक पंक्ति में कई कमांड निष्पादित कर सकते हैं, नियमित अभिव्यक्ति डिबग कर सकते हैं, वीआईएम कॉन्फ़िगरेशन की जांच कर सकते हैं, बाहरी कमांड निष्पादित कर सकते हैं या रजिस्टरों के साथ काम कर सकते हैं, आदि। ।
उदाहरण के लिए:
let @d = '<td></td>'
let @r = '<tr>' . repeat(@d, 5) . '</tr>'
echo @r
let @t = '<table>' . repeat(@r, 5) . '</table>'
reg
जो सामान्य मोड की तुलना में एक्स मोड में अधिक आसान है (जहां आप केवल अपनी अंतिम कमांड देख सकते हैं)।
व्यावहारिक उपयोग
मेरे पास निम्नलिखित उपनाम हैं .bash_aliases
:
alias trim="ex +'bufdo!%s/\s\+$//e' -scxa"
alias retab="ex +'set ts=2' +'bufdo retab' -scxa"
नोट: का उपयोग करना bufdo
नहीं है ex
POSIX अनुरूप विधि (अनुसार मैनुअल ), तो फिर उसे अपने साथ उपयोग करने पर विचार कर सकते हैं find
बजाय। !
बचत (अन्यथा चेतावनी उत्पन्न होता है) के बिना बफ़र्स स्विचिंग मजबूर करने के लिए प्रयोग किया जाता है।
पहली बार मैं अपने सभी स्रोत फ़ाइलों में अनुगामी रिक्त स्थान को ट्रिम करने के लिए उपयोग कर रहा हूं, जैसे:
trim **/*.php
दूसरा व्यक्ति सभी टैब को रिक्त स्थान में बदल देता है (उदाहरण के लिए):
retab **/*.php
मेरे लिए उपयोग retab
करना काफी है, लेकिन यहां कुछ डाउनसाइड्स का वर्णन किया गया है । -V
वर्बोसिटी आउटपुट में वृद्धि के लिए अतिरिक्त जोड़ें ।
नोट zsh / bash4 का उपयोग कर कि उपरोक्त उदाहरण ग्लोबिंग ( **
), तो सुनिश्चित करें कि आपके खोल इसका समर्थन करता है और यह सक्षम है बनाते हैं।
अधिक व्यावहारिक उदाहरणों (जैसे HTML फ़ाइलों को पार्स करना) के लिए, जाँच करें:
पूर्व मोड के बारे में और भी जानें:
Q
औरq:
काफी अलग हैं। आप केवलQ
सही की बात कर रहे हैं ?