vim - विम में एक पूरी लाइन डुप्लिकेट करें




editor keyboard-shortcuts (13)

मैं Vim में पूरी लाइन को IntelliJ IDEA / Resharper या Ctrl + Alt + ^ / में ग्रहण में Ctrl + D के समान तरीके से डुप्लिकेट कैसे करूं?


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


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

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


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

nmap <C-d> mzyyp`z

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


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

लाइन की प्रतिलिपि बनाने के लिए वाई वाई या वाई
या
लाइन को हटाने के लिए डी डी

फिर

कर्सर के बाद कॉपी या हटाए गए पाठ को पेस्ट करने के लिए पी
या
कर्सर से पहले कॉपी या हटाए गए टेक्स्ट पेस्ट करने के लिए पी


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


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

:nnoremap yp Yp

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


मुझे पता है कि मैं पार्टी के लिए देर हो चुकी हूं, लेकिन जो भी हो; मेरे पास यह है। Vimrc में:

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

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

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

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


यदि आप एक और तरीका चाहते हैं :-)

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

"ap यह कर्सर पर बफर की सामग्री रखेगा।

इस पर कई भिन्नताएं हैं।

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

अधिक मज़ेदार के लिए http://www.vim.org/htmldoc/help.html देखें


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

imap <SCd> <Esc>Yp


लाइन की प्रतिलिपि बनाने के लिए वाई वाई या वाई
या
लाइन डी को हटाने (काटने) के लिए डी डी

फिर

पी वर्तमान लाइन के बाद कॉपी या हटाए गए पाठ पेस्ट करने के लिए
या
वर्तमान लाइन से पहले कॉपी या हटाए गए पाठ को पेस्ट करने के लिए पी


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

Ex रास्ता:

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

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

यदि आप इसे गठबंधन करते हैं तो यह वास्तव में शक्तिशाली हो सकता है :g या :v :

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

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


वाई वाई

इसे हटाए बिना मौजूदा लाइन को यंक कर देगा

डी डी

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

पी

पिछले तरीकों में से किसी एक द्वारा पकड़ लिया गया एक लाइन रखेगा


वाई वाई पी - इसे याद रखें "yippee!"

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

वाई 7 वाई पी


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

yy

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

p




vi