मैं अपने अंतिम संपादन के स्थान पर कैसे जा सकता हूं?


68

मैं अक्सर एक बड़ी फ़ाइल के मध्य में परिवर्तन करता हूं, ggकुछ जांचने के लिए ऊपर की ओर कूदने के लिए उपयोग करता हूं, और फिर मुझे एहसास होता है कि मैं एक चिह्न सेट करना भूल गया था जहां मैं संपादन कर रहा था। क्या अंतिम-परिवर्तित लाइन के स्थान पर कूदने के लिए एक अंतर्निहित तरीका है?

जवाबों:


84

`.आदेश आपका अंतिम परिवर्तन पर ले जायेगा।

`एक निशान को जाता है, और .एक "विशेष" मार्क जो स्वचालित रूप से स्थिति में जहाँ पिछले परिवर्तन किया गया था करने के लिए सेट कर दिया जाता है। :help `.कुछ और जानकारी के लिए देखें ।

वहाँ भी है ``जो आपको वापस लाएगा जहाँ कर्सर आपके अंतिम कूदने से पहले था। देखें :`` अधिक जानकारी के लिए मदद

एक और उपयोगी निशान है `^; यह वह स्थिति है जहां कर्सर पिछली बार था जब इन्सर्ट मोड को रोका गया था। देखते हैं :help `^

:help mark-motionsनिशान का उपयोग करने के बारे में कुछ और सामान्य जानकारी के लिए देखें (कुछ अन्य "विशेष" निशान जो स्वचालित रूप से सेट हैं)।


7
आप परिवर्तन सूची में स्थिति के बीच उपयोग g;और g,स्थानांतरित करने के लिए भी कर सकते हैं । देखें :h g;और:h g,
पीटर रिंकेर

3
'(बैकस्टिक) के बजाय आप (एपोस्ट्रोफी) का उपयोग भी कर सकते हैं `
स्पार्कव

21

यहां एक और दृष्टिकोण है जो आपके दिए गए परिदृश्य पर फिट बैठता है, और जहां आप तुरंत पहले थे gg(अंतिम परिवर्तित लाइन के लिए नहीं) के लिए कूद जाएंगे ।

उपयोग CtrlO

जब आप दबाते हैं gg, तो आपकी पुरानी कर्सर स्थिति कूद सूची में धकेल दी जाती है । से :help jumplist:

कूद सूची में जंपर्स को याद किया जाता है। साथ CTRL-Oऔर CTRL-I आदेश आप फिर से वापस पुराने छलांग से पहले कर्सर पदों के लिए जा सकते हैं, और। इस प्रकार आप सूची में ऊपर और नीचे जा सकते हैं। प्रत्येक विंडो के लिए एक अलग कूद सूची है। प्रविष्टियों की अधिकतम संख्या 100 निर्धारित की गई है।

[...]

यदि आप जंप कमांड का उपयोग करते हैं, तो जंप सूची के अंत में वर्तमान लाइन नंबर डाला जाता है। यदि एक ही लाइन पहले ही जंप सूची में थी, तो उसे हटा दिया जाता है। इसका परिणाम यह होता है कि जब CTRL-Oआप दोहराते हैं तो केवल एक बार ही पुराने पदों पर वापस आ पाएंगे।

इसके लिए आवश्यक है कि आप +jumplistफीचर के साथ Vim (vi नहीं) का उपयोग करें । यदि :echo has('jumplist')प्रिंट करता है 1, तो आप इसका उपयोग कर सकते हैं।


19

Dnetserr के उत्तर और पीटर रिनकर की टिप्पणी को जोड़ने के लिए, विम बदलावों की एक सूची रखता है, और इसके साथ कुछ आदेश भी जुड़े हैं।

:changes

परिवर्तनों को सूचीबद्ध करेगा, आपको दिखाएगा कि वे कहां थे और वे क्या थे। उदाहरण के लिए:

change line  col text
    2     8   17 #include <stdio.h>
    1     3    0 #include "stm32f407.auto.h"
>

>शो में वह रेखा जिसमें परिवर्तन स्टैक में आप हैं, एक तरह से जंप सूची ( :jumps) या टैग स्टैक ( :tags)। इसके अलावा जंप सूची और टैग स्टैक की तरह, आप इस सूची को पार कर सकते हैं।

सामान्य मोड में, g;पिछले परिवर्तन स्थान g,पर जाने के लिए और अगले एक पर जाने के लिए गति होती है । तुम भी करने से पहले परिवर्तन की संख्या टाइप कर सकते हैं g;या g,सूची से उस परिवर्तन में जाने के लिए। ऊपर, 2g;मुझे जहाँ stdio.h शामिल परिवर्तन हुआ था ले जाएगा।

जब ढेर के बीच में, :changesरिश्तेदार दूरी दिखाने के लिए अपडेट से संख्या । उदाहरण के लिए:

change line  col text
    1     8   17 #include <stdio.h>
>   0     3    0 #include "stm32f407.auto.h"
    1    10    4 other

यह दिखाता है कि मैं वापस एक (जा सकते हैं 1g;या सिर्फ g;) या आगे की ओर एक ( 1g,या बस g,)।

यदि आप वास्तव में कुछ संशोधनों से पहले बदलाव करना चाहते हैं तो यह बहुत अच्छा है

इसका नुकसान यह है कि यह एक सामान्य गति की तरह काम नहीं करता है। उदाहरण के लिए, आप ऐसा नहीं कर सकते dg;, जबकि पिछले परिवर्तन स्थान के लिए कर्सर से हटाते हैं, करने के लिए d'.और d'^गति के रूप में काम करते हैं।


15

g; पहले से संपादित लाइन पर जाएंगे।


3
नए संपादन स्थिति में जाने के लिए आप g, (अल्पविराम) का भी उपयोग कर सकते हैं।
जेम्स

5

चूंकि वीआई में पूर्ववत आदेश एक अंतिम कार्य के रूप में फिर से काम करेगा, जब मैं पूर्ववत था, तो मैंने uuएक साधन के रूप में उपयोग किया है जहां मैंने अंतिम बार संपादित किया था।

आप के साथ विम चला रहे हैं nocompatibleसेट (ज्यादातर लोगों करते हैं), आप उपयोग करना चाहते uके बाद CTRL+Rपूर्ववत और फिर से करना। अन्यथा uuवीआई के रूप में काम करेगा।


यदि :set nocompatibleइसका उपयोग नहीं किया गया है।
मूरू

2
मेरे vim(साथ nocompatible) के साथ दो पूर्ववत करता है uu, लेकिन मैं का उपयोग uऔर CTRL+rएक ही प्रभाव के लिए।
शहबाज

इस उत्तर का यह लाभ है कि यह vi के साथ भी काम करता है, यदि आपके पास Aix / HPUX / Solaris / अन्य यूनिक्स वेरिएंट पर कोई विम नहीं है।
गुंतराम ब्लोह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.