एक निश्चित लाइन नंबर के साथ एक लाइन को कैसे yank करें?


41

यह कहें कि मैं लाइन 20 पर हूं और मैं लाइन 4 को पसंद करना चाहता हूं, मैं यह कैसे कर सकता हूं?

और इसी तरह, मैं अपने कर्सर स्थिति के सापेक्ष एक रेखा कैसे बांध सकता हूं, एक 3 पंक्तियों को कहो?


जवाबों:


59

से :help :yank:

:[range]y[ank] [x]      Yank `[range]` lines [into register x].

तो, लाइन 4 के लिए, एक टाइप करेगा:

:4yank

ध्यान दें कि आप इसे सम्मिलित मोड से आसानी से कर सकते हैं <C-o>; यह आपको एक कमांड निष्पादित करने की अनुमति देता है, जिसके बाद आप मोड डालने के लिए वापस आ जाते हैं; उदाहरण के लिए:

<C-o>:4yank

आप निश्चित रूप से, अन्य श्रेणियों का भी उपयोग कर सकते हैं। कुछ उदाहरण:

  • लाइनें 1 से 3: :1,3yank
  • संपूर्ण बफ़र: :%yank
  • वर्तमान रेखा से बफर के अंत तक: :.,$:yank
  • वर्तमान लाइन और अगले 3: :.,+3yank
  • वर्तमान लाइन और पिछले 3: :-3,.yank
  • वर्तमान रेखा के ऊपर की रेखा 3 रेखाएँ: :-3yank

श्रेणियों के बारे में याद रखने वाली सबसे उपयोगी चीजें:

  • के रूप में है :line1,line2command
  • A .वर्तमान लाइन है (आप ज्यादातर मामलों में वास्तव में डॉट को छोड़ सकते हैं ; :.,+3yankऔर :,+3yankसमान हैं)
  • आप वर्तमान स्थिति के सापेक्ष रेखाएँ निर्दिष्ट करते हैं +nऔर -n

:help [range]अधिक जानकारी के लिए देखें ।


6
<Co> का उल्लेख करने के लिए बोनस अंक, मैं उस पर काम कर रहा हूं।
फिलिपफ्रैंक

7
यह भी ध्यान देने योग्य है कि आप के :4yankसाथ संक्षिप्त कर सकते हैं:4y
NewbieOnRails

35

कार्पेटस्मोकर के जवाब के अलावा, मुझे कमाल :help :mऔर इशारा करना चाहिए :help :t

यदि आप वर्तमान पंक्ति के ठीक नीचे पंक्ति 4 को कॉपी करना चाहते हैं तो आप ऐसा कर सकते हैं:

:4t.

या फिर, यदि आप उस लाइन को वर्तमान लाइन के ठीक ऊपर कॉपी करना चाहते हैं:

:4t-

1

आपके द्वारा प्राप्त पूर्व-मोड आदेशों के अलावा, आप इसे कमांड मोड में भी प्राप्त कर सकते हैं, जैसे: 4GY''- जिसका अर्थ है: गोटो लाइन 4 ( 4G), यैंक लाइन ( Y), और पिछली लाइन पर वापस लौटें ( '')।

तुम भी कूद के निशान का उपयोग कर सकते हैं; आपके दूसरे प्रश्न के लिए, उदाहरण के लिए: mm3kY'm- जिसका अर्थ है: सेट मार्क m ( mm), तीन लाइनें ऊपर जाएं ( 3k), yank लाइन ( Y), चिह्न m पर वापस जाएँ ( 'm)।


1
`` का उपयोग करना शायद '' की तुलना में बेहतर अनुशंसा है क्योंकि पूर्व उसी पंक्ति और स्तंभ पर वापस जाता है। 'मी बनाम' मी के लिए डिट्टो।
जामसेन

मैं सहमत हूँ। (कोई भी विचार है कि विकी मार्कअप में शाब्दिक बैकटिक्स कैसे बनाएं क्योंकि उनके पास एक विशेष अर्थ है?) - अन्यथा आपकी टिप्पणी मेरे उत्तर में संशोधन के रूप में और पाठकों के लिए संकेत के रूप में काम करेगी।
जानिस

आपको इनलाइन कोड (cf, daringfireball.net/projects/markdown/syntax#code ) को सीमांकित करने के लिए कई बैकटिक्स का उपयोग करना होगा । मुझे पता है कि यह सवाल / जवाब में काम करता है, लेकिन मैं इसे अपनी टिप्पणी में काम नहीं कर सका।
जामसेन

1

बस टाइप करें

:4y

yank लाइन 4 के लिए

यह अनाम रजिस्टर में जाएगा। फिर, (उदाहरण के लिए) आप pइसे कहीं और लगाने के लिए उपयोग कर सकते हैं । आप [n]p10 बार पेस्ट करने के लिए 10p का भी उपयोग कर सकते हैं ।

आप इसे "a" जैसे नामांकित रजिस्टर में डाल सकते हैं

:4y a

2
इसे "a44" के साथ नामांकित रजिस्टर में डालने का हिस्सा सही नहीं लगता है। यदि आप ऐसा करते हैं, तो विम आपको "4 व्हाट्स?" कहने के लिए इंतजार कर रहा होगा। जैसे अगर आप हिट करते हैं तो यह 4 लाइनों को शुरू कर देगा। वर्तमान स्थिति, अगर आप टाइप करते हैं / foo <Enter> यह "फू" की घटना के बाद 4 वें को झुका देगा, आदि
डॉन हैच

आखिरी कमांड को पढ़ना चाहिए 4G"ayy
रोमेनिल

0

तुम कर सकते हो

:10y <Enter> (to copy the line 10)
p (paste line 10 where the cursor is)

रिश्तेदार संख्या सेट करने से कोड की लाइनों के बीच भी बढ़ने में मदद मिलती है।

:set relativenumber

अब आप कर्सर के ऊपर से 5 वीं पंक्ति को कॉपी कर सकते हैं:

:-5y <Enter>
:p (to paste)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.