विम में, मैं एक खोज से पहले मैं कैसे वापस जाऊं?


258

विम में प्रोग्रामिंग मैं अक्सर किसी चीज की तलाश में जाता हूं, इसे यांक देता हूं, फिर जहां मैं था, वहां वापस जाता हूं, इसे सम्मिलित करता हूं, इसे संशोधित करता हूं।

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

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


जवाबों:


393

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

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


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

1
Ctrl + O मेरी पसंदीदा विधि भी है। मैं इसका लगातार उपयोग करता हूं और चाहता हूं कि दूसरे संपादक इसके व्यवहार को दोहराए।
12

45
हां, CTRL-O और CTRL-I आपको लगता है कि आप आगे और पीछे ले गए हैं, जहां आप अच्छे हैं।
एडवर्ड तुंगाय सेप

8
यदि आप टैग का उपयोग करके वहां गए हैं तो Ctrl + T आपको वापस ले जाएगा। यदि आपने टैग का उपयोग किए बिना इसे खोज लिया है तो Ctrl + T आपको अपने अंतिम टैग के
नाथन फ़ेलमैन

1
मैंने पाया है कि अगर मैं vía कूदता हूं :70और फिर :100, ctrl+oएक बार दबाने पर मूल स्थान पर वापस चला जाता है, तो रेखा 70 नहीं। :(
WhyNotHugo

91

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


4
केवल तभी काम करता है जब आप पहले मैच में हों, nबाद के मैचों के लिए इसका मतलब है कि आप उस जगह पर वापस नहीं लौटें जहां आपने शुरुआत की थी।
क्रिश

अगर आपने खोज की और बदलाव किया तो क्या होगा?
कोस्टा

1
आप उपयोग भी कर सकते हैं g;और g,, यह पिछले / अगले बदलाव की स्थिति में जाता है।
गोएत्ज़क

39

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

  1. कमांड-मोड में, m[अक्षर] दबाएँ । उदाहरण के लिए, maवर्तमान पंक्ति का उपयोग करने में एक निशान सेट एक निशान पहचानकर्ता के रूप में।

  2. मार्क प्रेस '[अक्षर] पर वापस जाने के लिए । उदाहरण के लिए, 'aआपको चरण 1 में सेट लाइन चिह्न पर वापस ले जाता है। पंक्ति की स्तंभ स्थिति पर वापस जाने के लिए जहां आपने लाइन को चिह्नित किया था, `a( बैक-टिक [पत्र] ) का उपयोग करें।

वर्तमान में सेट किए गए सभी चिह्नों को देखने के लिए, टाइप करें :marks


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

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

इसका मतलब है कि आप 'bउस निशान पर कूदने के लिए कर सकते हैं , फिर ''(2 सिंगल-कोट्स) जहां भी आप पहले थे, वापस कूदने के लिए करें।

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


6
सौभाग्य से एक निशान अक्सर अनावश्यक होता है क्योंकि विम कुछ पदों का विशेष ट्रैक रखता है और आपको ``, ^ O, आदि के साथ उन तक पहुंच प्रदान करता है
aehlke

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

1
@HermannIngjaldsson आपने अब तक इसका पता लगा लिया होगा, लेकिन 'का उपयोग करते हुए आप चिह्नित लाइन पर ले जाएंगे,' आपको सटीक स्थान पर ले जाएगा।
azmr

38

आपको वास्तव में पढ़ना चाहिए :help jumplistयह सब बहुत अच्छी तरह से समझाता है।


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

1
क्या खूब पढ़ा! यह सुपर सहायक है। <Co> और <Ci> उन स्थानों के माध्यम से चक्र करने के लिए जहां आप हाल ही में आए हैं। डिफ़ॉल्ट रूप से बफ़र्स पर काम करता है:)
कोस्टा


7

सबसे आसान तरीका है, एक निशान सेट करना, साथ m[letter], फिर उसके साथ वापस जाना'[letter]


जब मैं विम टिप्स खोजता हूं तो यह आपको देखने के लिए एक इलाज है। मैं ctrl-i के साथ ctrl-o का अधिक उपयोग कर रहा हूं क्योंकि यह आगे और पीछे आसान और स्वचालित रूप से कदम बढ़ाता है।
मैट डिक

7

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

nnoremap / ms/
nnoremap ? ms?

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


यहाँ केवल चेतावनी है कि यह एक विंडो में खोज करता है जैसे कि NerdTree जहां mइसे मार्क के अलावा कुछ और परिभाषित किया जाता है, NerdTree के मामले में यह मेनू है।
क्रिश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.