ग्रहण में विम में एक पूरी लाइन की नकल कैसे करें?


1624

मैं कैसे में एक पूरी लाइन नकल करते विम करने के लिए एक समान तरीके से Ctrl+ DIntelliJ विचार / Resharper में या Ctrl+ Alt+ / में ग्रहण ?


49
क्या लोग अब विम्मुटोर नहीं चलाते हैं? यह शायद विम के उपयोग करने के सीखने के पहले पांच मिनट के भीतर है।
डैश-टॉम-बैंग

131
क्या आप इस लाइन की नकल करना चाहेंगे? Yes Pपट्टा। :)
Stavr00

3
FWIW मैंने पिछले 2 महीनों में लगभग एक दर्जन बार विमुद्रीकरण किया है और यह अवधारणा शामिल नहीं है। यह बताता है कि "d" और "v - नेविगेट - y" कैसे करें "इसके बाद" p "। यह बिना बताए एक लाइन को कॉपी करने का तरीका नहीं बताता है जैसा कि यहां पूछा गया है।
danielson317

जवाबों:


2769

yyया Yलाइन कॉपी करने के लिए (स्मरक: y ank )
या
ddकरने के लिए हटाएं लाइन (विम प्रतियां क्या आप एक में नष्ट कर दिया क्लिपबोर्ड की तरह "रजिस्टर", एक तरह कटौती आपरेशन)

फिर

pकरने के लिए पी aste नकल या पाठ हटाया गया के बाद वर्तमान पंक्ति
या
Pकरने के लिए पी aste नकल या हटाए गए टेक्स्ट से पहले वर्तमान पंक्ति


129
एक उत्कृष्ट बिंदु। हालांकि किसी कारण से, मुझे लगता है कि दो बार y मारना मेरे लिए SHIFT-y की तुलना में अधिक तेज़ है
Mark Biek

25
@camflan मुझे लगता है कि Y को "कर्सर से अंत तक कॉपी होना चाहिए"
Dzung Nguyen

42
और 2y का उपयोग 2 लाइनों की नकल करने के लिए किया जा सकता है (और किसी भी अन्य n के लिए)
अमीर अली अकबरी

5
@nXqd: हाँ, उपयोगकर्ताओं का एक बड़ा प्रतिशत नक्शे में Yहै y$। (के साथ संगत Dऔर C((लेकिन वीआई संगत नहीं (कोई परवाह नहीं है।))) यह भी प्रस्तावित है :help Y
हारून थोमा

11
दो पंक्तियों को कॉपी करने के लिए, यह सिर्फ तेजी से जाने के लिए yjया yk, खासकर जब से आप एक चरित्र पर दोगुना नहीं करते हैं। इसके अलावा, ykएक बैकवर्ड संस्करण है जो 2yyऐसा नहीं कर सकता है, और आप पीछे की ओर y9jया y2kआदि में पहुंचने के लिए लाइनों की संख्या डाल सकते हैं । केवल अंतर यह है कि आपकी गिनती n-1कुल nलाइनों के लिए होनी चाहिए , लेकिन आपका सिर यह सीख सकता है वैसे भी।
zelk

406

सामान्य मोड: अन्य उत्तर देखें।

पूर्व जिस तरह से:

  • :t. लाइन को डुप्लिकेट करेगा,
  • :t 7 लाइन 7 के बाद इसे कॉपी करेंगे,
  • :,+t0फ़ाइल की शुरुआत में वर्तमान और अगली पंक्ति की नकल करेगा ( ,+सीमा का एक पर्याय है .,.+1),
  • :1,t$शुरू से अंत तक कर्सर की स्थिति तक पंक्तियों की प्रतिलिपि 1,बनाएंगे ( रेंज का एक पर्याय है 1,.)।

यदि आपको नकल करने के बजाय स्थानांतरित करने की आवश्यकता है, तो :mइसके बजाय का उपयोग करें :t

यह वास्तव में शक्तिशाली हो सकता है यदि आप इसे साथ जोड़ते हैं :gया :v:

  • :v/foo/m$ फ़ाइल के अंत में पैटर्न "फू" का मिलान नहीं करने वाली सभी लाइनों को स्थानांतरित करेगा।
  • :+,$g/^\s*class\s\+\i\+/t.class xxxकर्सर के ठीक बाद फॉर्म की सभी बाद की पंक्तियों को कॉपी करेगा ।

संदर्भ: :help range, :help :t, :help :g, :help :mऔर:help :v


1
जब आप :विजुअल मोड में प्रेस करते हैं , '<,'>तो यह रूपांतरित हो जाता है, इसलिए यह लाइन का चयन करता है, जिसमें दृश्य चयन पर लाइन होती है। तो, दृश्य मोड में, :t0शुरुआत में लाइनों की नकल करेंगे।
बेनोइट

1
रिकॉर्ड के लिए: जब आप एक कोलन टाइप करते हैं (:) आप कमांड लाइन मोड में जाते हैं, जहां आप एक्स कमांड दर्ज कर सकते हैं। vimdoc.sourceforge.net/htmldoc/cmdline.html Ex कमांड वास्तव में शक्तिशाली हो सकता है और ट्रोल हो सकता है। Yyp समाधान "सामान्य मोड" कमांड हैं। यदि आप एक दूर की रेखा को कॉपी / स्थानांतरित / हटाना चाहते हैं या लाइनों की सीमा एक पूर्व कमांड बहुत तेज हो सकती है।
Niels Bom

7
इस तरह के जवाब के साथ एक समस्या के कारण डाउनवोट नहीं किया गया है (हालांकि यह मेरी स्थिति के लिए काम नहीं करेगा, मुझे पता नहीं है कि जिस पंक्ति संख्या को मैं डुप्लिकेट करना चाहता हूं), लेकिन क्योंकि यह वास्तव में इसके लिए शीर्ष / स्वीकृत उत्तर नहीं होना चाहिए आमतौर पर खोजा गया प्रश्न।
mjaggard

9
@mjaggard: स्वीकृत उत्तर हमेशा अपने स्कोर की परवाह किए बिना शीर्ष पर होते हैं। हां, मैंने उस उत्तर को एक पूरक के रूप में जोड़ा, और ऐसा लगता है कि यह ओपी के अनुकूल है।
बेनोइट

7
:t.सवाल का सटीक जवाब है।
बुरक एर्डेम

293

YPया Ypया yyp


Yy$हालांकि (यथा (वर्तमान कर्सर स्थिति से, लाइन की शुरुआत नहीं)) के अंत तक (यांक (कॉपी) का रीमेक किया जाता है । इस पंक्ति के साथ .vimrc::nnoremap Y y$
हारून थोमा

1
गरीब पुराने मत भूलनाyyP
icc97

253

कॉपी और पेस्ट विम में

इस से कोई सरल नहीं मिलता है! सामान्य मोड से:

yy

फिर उस पंक्ति पर जाएं जिसे आप चिपकाना चाहते हैं और

p

34
आपने जिफ़ बनाने के लिए क्या इस्तेमाल किया?
ज़ोल्टन

4
@ ज़ोल्टन आप LiceCap का उपयोग कर सकते हैं, जो छोटे आकार का है
onmyway133

53

yy

इसे हटाए बिना वर्तमान लाइन को yank करेगा

dd

वर्तमान लाइन को हटा देगा

p

putपिछले विधियों में से किसी एक रेखा को पकड़ा जाएगा


3
यह पहली बार आया था, लेकिन यह डुप्लिकेट स्वीकार कर लिया गया है: stackoverflow.com/a/73357/1438029
ज्योफ्री हेल

44

यह करो:

सबसे पहले, yyवर्तमान लाइन की प्रतिलिपि बनाएँ, और फिर pपेस्ट करें।


20
स्पेस टाइप न करें।
Niels Bom

1
हां, यदि कर्सर लाइन के अंत में है और आप स्पेस टाइप करते हैं जैसा कि आप दिखाए गए लाइन को डुप्लिकेट कर देंगे, तो आपने जिस लाइन को हांका है, उसके नीचे एक 2 लाइन लिखी है।

43

यदि आप दूसरा रास्ता चाहते हैं:

"ayy: यह बफर में लाइन को स्टोर करेगा a

"ap: यह बफर की सामग्री डाल देगा a को कर्सर पर ।

इस पर कई विविधताएँ हैं।

"a5yy: यह बफर में 5 लाइनों को स्टोर करेगा a

अधिक मज़ा के लिए " विम मदद फ़ाइलें देखें ।


धन्यवाद, मैंने इसे एक बाँध के रूप में इस्तेमाल किया: नक्शा <नेता> डी "
एय्या

39

yyp - "yippee!"

बीच में एक नंबर के साथ कई लाइनें:

y7yp


17
7yy y7y के बराबर है और यह याद रखना आसान है कि कैसे करना है।
ग्रेव

10
y7yp (या 7yyp) शायद ही कभी उपयोगी है; कर्सर कॉपी की गई पहली लाइन पर रहता है ताकि p सोर्स की पहली और दूसरी लाइन के बीच कॉपी की गई लाइनों को चिपका दे। लाइनों के एक ब्लॉक को डुप्लिकेट करने के लिए 14y पर 7yyP
Nefrubyr

@Nefrubyr या :.,.+7 copy .+7: P
DarkWiiPlayer

23

yyp - बाद पेस्ट करें

yyP - पहले पेस्ट करें


6
चूंकि लाइन को डुप्लिकेट किया जा रहा है, सामग्री का अंतिम परिणाम समान है।
एक्यूमेनस

4
@ABB हालांकि, यहां एक छोटा अंतर है - आपका कर्सर किस लाइन पर आएगा।
मिकक

12

मुझे पसंद है: Shift+ v(तुरंत पूरी लाइन का चयन करने के लिए और यदि आप चाहें तो अन्य लाइनों का चयन करें), y, p


11

आप <Cx> <Cl> भी सम्मिलित कर सकते हैं, जो पिछली पंक्ति को इन्सर्ट मोड से दोहराएगा और आपको सभी लाइनों के साथ एक पूर्ण विंडो लाएगा। यह लगभग <Cp> की तरह काम करता है


यह बहुत उपयोगी है, लेकिन कई कुंजियों को दबाने से बचने के लिए मैंने इसे सिर्फ CTRL-L में मैप किया है, यह मेरा नक्शा है: Inoremap ^ L ^ X ^ L
Jorge Gajon

11

इसके साथ एक और विकल्प होगा:

nmap <C-d> mzyyp`z

आपको कर्सर स्थिति को संरक्षित करने का लाभ देता है।


10

किसी के लिए जो vi नहीं जानता है, ऊपर से कुछ जवाब उसे "पेस्ट ... वर्तमान लाइन के बाद / पहले" जैसे वाक्यांशों के साथ गुमराह कर सकते हैं ।
यह वास्तव में "पेस्ट ... के बाद / कर्सर से पहले " है।

yyया Yलाइन कॉपी करने के लिए
या
dd लाइन को हटाने के लिए

फिर

pनकल या नष्ट कर दिया पाठ चिपकाने के लिए के बाद कर्सर
या
Pकॉपी किया या नष्ट कर दिया पाठ चिपकाने के लिए पहले कर्सर


अधिक महत्वपूर्ण बाइंडिंग के लिए, आप इस साइट पर जा सकते हैं: vi पूर्ण कुंजी बंधन सूची


3

1 गेटा: जब आप लाइन लगाने के लिए "पी" का उपयोग करते हैं, तो यह आपके कर्सर के चालू होने के बाद इसे डालता है, इसलिए यदि आप लाइन के बाद लाइन जोड़ना चाहते हैं, तो आप कर्सर को एक लाइन से नीचे नहीं ले जाते हैं। नई लाइन डालने से पहले।


4
या पूंजी P का उपयोग करें - इससे पहले
Ghoti

3

डिफ़ॉल्ट है yyp, लेकिन मैं एक साल से इस रिबॉन्डिंग का उपयोग कर रहा हूं और इसे प्यार करता हूं:

" set Y to duplicate lines, works in visual mode as well. nnoremap Y yyp vnoremap Y y`>pgv


3

मुझे पता है कि मुझे पार्टी में देर हो रही है, लेकिन जो भी हो; मेरे पास मेरे .vimrc में है:

nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>

:copyआदेश सिर्फ प्रतियां चयनित लाइन या श्रेणी (हमेशा पूरे लाइनों) के लिए नीचे लाइन नंबर अपने तर्क के रूप में दिए गए।

सामान्य मोड में यह क्या करता है copy . इस लाइन को इस लाइन के ठीक नीचे कॉपी करें

और दृश्य मोड में यह चयन की शुरुआत से लेकर चयन के अंत तक चयन के अंत से नीचे की रेखा में बदल जाता है'<,'> copy '>


1
↑↑ सबसे अच्छा जवाब यहाँ!

2

Vi सीखने के लिए शुरू करने वालों के लिए, यहाँ एक अच्छा परिचय है, जो कि vi के साथ-साथ विशिष्ट Windows GUI एडिटर कर्सर मूवमेंट और शॉर्टकट कुंजियों की ओर से सूचीबद्ध है। यह yy(कॉपी लाइन) और p(के बाद पेस्ट ) सहित सभी मूल आदेशों को सूचीबद्ध करता है याP

विंडोज उपयोगकर्ताओं के लिए vi (विम)


1

यदि आप किसी पंक्ति को डुप्लिकेट करना चाहते हैं और उसे ठीक उसी तरह से नीचे चिपका सकते हैं जैसे, उदात्त Ctrl+ Shift+ में D, तो आप इसे अपनी .vimrcफ़ाइल में जोड़ सकते हैं ।

nmap <S-C-d> <Esc>Yp

या, इन्सर्ट मोड के लिए:

imap <S-C-d> <Esc>Ypa


हालाँकि यह इन्सर्ट मोड को छोड़ देता है, और बस iफिर से जुड़ने के बाद इसे तोड़ता है undo, इसलिए इन्सर्ट मोड में डुप्लिकेटिंग लाइनों का समाधान उतना तुच्छ नहीं है जितना लगता है।
DarkWiiPlayer

यह मेरे लिए पूरी तरह से ठीक काम करता है: imap <S-C-d> <Esc>Ypi इन्सर्ट मोड और nmap <S-C-d> <Esc>Ypसामान्य मोड में
जेडी

0

मुझे इस मैपिंग का उपयोग करना पसंद है:

:nnoremap yp Yp

क्योंकि यह देशी YPकमांड के साथ उपयोग करने के लिए इसे सुसंगत बनाता है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.