2012-05-06 16 views
20

चलती विम में बिना सभी की जगह, जब मैं कार्य करें:विम कर्सर

:%s/foo/bar/g 

यह पूरे दस्तावेज में 'बार' के साथ 'foo' के सभी घटना की जगह लेगा। जब यह पूरा हो जाता है, तो कर्सर अंतिम स्थिति में स्थानांतरित हो गया है जहां 'foo' को 'bar' से बदल दिया गया था।

आप इस आदेश को जारी करने से पहले कर्सर को मूल स्थिति छोड़ने के बिना :%s/foo/bar/g कैसे चलाते हैं?

क्या कोई विकल्प है जिसे मैं .vimrc फ़ाइल में सेट कर सकता हूं?

+6

कर्सर को घुमाने के बिना इसे करने के बारे में निश्चित नहीं है, लेकिन आप इसे सिंगल-कोट दो बार मारकर वापस ले जा सकते हैं। –

उत्तर

23

मैं बस की जगह के बाद Ctrl +हे टाइप पिछले स्थान वापस पाने के लिए।

+0

@ लुकपेट स्वरूपण संपादन के लिए धन्यवाद। –

+0

@ib। उत्तर को और अधिक परिपूर्ण बनाने से कभी थक नहीं :) :) – sehe

+1

क्या इसके लिए कोई ":" कमांड है? – Bunder

25

जब वास्तविक प्रतिस्थापन किए जाने से पहले :substitute कमांड चलाया जाता है, कर्सर की स्थिति एक जंप सूची में संग्रहीत होती है। नवीनतम कूद से पहले स्थिति पर वापस लौटने के लिए, कोई `` या '' सामान्य मोड आदेशों का उपयोग कर सकता है। जबकि पूर्व संग्रहीत स्थिति में बिल्कुल कूदता है, बाद वाले कर्सर को उस रेखा पर पहले गैर-खाली वर्ण में ले जाता है जहां स्थिति स्थित है।

तो, जल्दी से कर्सर वापस अपने मूल स्थान पर, प्रकार `` के बाद प्रतिस्थापन आदेश समाप्त हो गया है वापस जाने के लिए।

प्रतिस्थापन और, इस मुद्दे

:%s/pat/str/g|norm!`` 

या, अगर यह सटीक स्थिति के लिए, लेकिन केवल अपनी लाइन के लिए नहीं कूद करने के लिए पर्याप्त है,

:%s/pat/str/g|'' 

के रूप में एक आदेश में कर्सर ले जाकर संयोजित करने के लिए ऊपर दिखाया गया है, '' को norm!'' को पूर्व कमांड में पूर्व आदेशों की श्रेणी वाक्यविन्यास के कारण प्राथमिकता में उपयोग किया जा सकता है (:help :range देखें)।

+0

अच्छा प्रयास करें। लेकिन सुरुचिपूर्ण नहीं है। जोर से 'Ctrl-o' का उपयोग करें। – mattn

+0

@mattn: 'Ctrl' +' O' का उपयोग करने वाले मानदंड के अनुसार सुरुचिपूर्ण है, जबकि '\' \ '' नहीं है? उत्तरार्द्ध कमांड कीस्ट्रोक के मामले में पहले की तुलना में अधिक नहीं है; दोनों इस मामले में एक ही कर्सर आंदोलन की ओर ले जाते हैं। आप '\' \ '' ('Ctrl' +' O' के बजाय) को सुरुचिपूर्ण क्यों दबाते हैं? –

+0

यह आसान जवाब है। सी-ओ से अधिक लंबा और आपका कमांड अपडेट जम्प्लिस्ट। अगर मैं आपके रास्ते का उपयोग करता हूं, तो मैं जी का उपयोग करूंगा। :) – mattn