2008-09-10 15 views
238

विम में प्रोग्रामिंग मैं अक्सर कुछ खोजता हूं, इसे यंक करता हूं, फिर उस स्थान पर वापस जाता हूं जहां मैं था, इसे सम्मिलित करता हूं, इसे संशोधित करता हूं।विम में, मैं वापस कैसे जा सकता हूं जहां मैं खोज से पहले था?

समस्या यह है कि जब मैं खोज और खोज करता हूं, तो मुझे मैन्युअल रूप से वापस जाने की आवश्यकता होती है जहां मैं था।

क्या मेरी पिछली खोज शुरू होने पर मैं वापस जाने का एक स्वचालित तरीका है?

+0

संभावित कर्प्ल [कर्सर को अपनी अंतिम स्थिति में ले जाएं] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/5052079/move-cursor-to-its-last-position) –

उत्तर

354

Ctrl +हे मुझे पिछले स्थान पर ले जाता है इसे वापस लिए जाने के लिए है। खोज से पहले स्थान के बारे में पता नहीं है।

संपादित करें: ` आपको आपके द्वारा किए गए अंतिम परिवर्तन पर ले जाएगा।

+0

यह भी प्रतीत होता है कि CTRL + O को पर्याप्त समय दबाकर भी आपको पहले खोले गए फ़ाइलों के माध्यम से वापस लेना शुरू हो जाएगा। –

+1

Ctrl + O मेरी पसंदीदा विधि भी है। मैं इसे लगातार इस्तेमाल करता हूं और अन्य संपादकों की इच्छा को अपने व्यवहार की दोहराता हूं। – amrox

+39

हां, CTRL-O और CTRL-I आपको आगे और आगे ले जाने लगते हैं जहां आप अच्छे हैं। –

34

मैंने हमेशा एक निशान स्थापित करके किया है।

  1. कमांड मोड में, मीटर [पत्र] दबाएँ। उदाहरण के लिए, मीटर का उपयोग कर इंडेंटिफायर के रूप में वर्तमान पंक्ति पर एक चिह्न सेट करता है।

  2. निशान पर वापस जाने के लिए '[अक्षर] दबाएं। उदाहरण के लिए, 'एक तुम वापस निशान सेट करने के लिए कदम 1.

में ले जाता है निशान है कि वर्तमान में निर्धारित करते हैं, प्रकार के सभी देखने के लिए: निशान


थोड़ा असंबंधित नोट पर, मैंने अभी अंकों के बारे में एक और निफ्टी चीज़ खोज ली।

मान लें कि आप 'बी करके बी को चिह्नित करने के लिए कूदते हैं। Vim स्वचालित रूप से चिह्नित करने के लिए कूदने से पहले आप जिस भी लाइन पर थे, VIM स्वचालित रूप से ' (यह एक एकल-उद्धरण) चिह्न सेट करता है।

इसका मतलब है कि आप क्या कर सकते हैं ' (2 एकल उद्धरण)' ख उस निशान पर जाने के लिए है, तो करना 'whever करने के लिए आप से पहले थे वापस कूदने के लिए।

मुझे यह गलती से का उपयोग करके पता चला: अंक कमांड, जो सभी अंकों की एक सूची दिखाता है।

+5

सौभाग्य से एक निशान अक्सर अनावश्यक होता है क्योंकि विम विशेष रहता है कुछ पदों का ट्रैक करें और आपको '',^ओ, आदि – aehlke

+0

के साथ पहुंच प्रदान करता है, यह चिह्न केवल मुझे उस लाइन की शुरुआत में ले जाता है जिस पर इसे सेट किया गया था।): –

+1

@ हरमन इंजजल्ड्ससन आपने अब तक यह पता लगाया होगा, लेकिन 'उपयोग करने के दौरान आपको चिह्नित लाइन पर ले जाएगा,' आपको सही स्थान पर ले जाएगा। – azmr

7

सबसे आसान तरीका m[letter] साथ एक निशान निर्धारित करते हैं, है, तो साथ '[letter]

+0

जब मैं विम युक्तियों की खोज करता हूं तो यह आपको देखने का एक इलाज है। मैं ctrl-o के साथ ctrl-o का उपयोग कर रहा हूं क्योंकि यह आगे और आगे आसान और अधिक स्वचालित रूप से कदम उठाता है। – MattK

84

`` का उपयोग करें जो आपने खोजे/कूदने से पहले उस सटीक स्थिति पर वापस कूदने के लिए किया था, याउस पंक्ति की शुरुआत में वापस कूदने के लिए जिस पर आप खोजे/कूद गए थे।

+0

यदि आप पहले मैच में हैं तो केवल काम करने के लिए देखता है,' बाद में मैचों में 'मतलब है कि आप वापस कूद नहीं सकते हैं जहां आपने शुरू किया था। – Kris

+0

क्या हुआ यदि आपने खोज की और परिवर्तन किया? – Costa

31

आपको वास्तव में :help jumplist पढ़ना चाहिए, यह सब ठीक से बताता है।

+0

मुझे यह जवाब सबसे अच्छा लगता है, इसमें बहुत सारी जानकारी है: सहायता जो ज्यादातर लोगों को नहीं पता (और मैंने हाल ही में नहीं किया) –

7

मैं इस एक का उपयोग करें: फिर

nnoremap/ms/ 
nnoremap ? ms? 

अगर मैं / या ? का उपयोग करके कुछ खोजते हैं, तो मैं जल्दी से वापस `s से जा सकते हैं। आप अपने पसंदीदा पत्र में s पत्र को प्रतिस्थापित कर सकते हैं।

+0

केवल यहां चेतावनी है कि यह एक खिड़की में खोजता है जैसे कि नेरड्री जहां 'एम' है मार्क के अलावा कुछ और परिभाषित किया गया है, नेरड्री के मामले में यह मेनू है। – Kris

24

Ctrl + हे और Ctrl + मैं, पीठ और आगे कूद के लिए।