विम में क्या रजिस्टर में टेक्स्ट डाले बिना डिलीट करने का कोई तरीका है?


470

विम का उपयोग करना मैं अक्सर एक ब्लॉक के साथ कोड के एक ब्लॉक को बदलना चाहता हूं जिसे मैंने अभी-अभी yanked किया था।

लेकिन जब मैं उस कोड के ब्लॉक को हटा देता हूं जिसे प्रतिस्थापित किया जाना है, तो वह ब्लॉक खुद उस रजिस्टर में चला जाता है जो उस ब्लॉक को मिटा देता है जिसे मैंने अभी yanked किया था। तो मुझे हां करने की आदत है, फिर डालने की, फिर जो मैं नहीं चाहता था उसे हटा देना, लेकिन कोड के बड़े ब्लॉक के साथ यह सम्मिलित ब्लॉक और अलग को हटाने के लिए ब्लॉक रखने की कोशिश में गड़बड़ हो जाता है।

तो विम में पाठ को बदलने का सबसे पतला और तेज तरीका क्या है?

  • क्या पाठ को रजिस्टर में डाले बिना डिलीट करने का कोई तरीका है?
  • क्या यह कहने का कोई तरीका है जैसे "अगले शब्द को बदलें" या "अगले पैराग्राफ को बदलें"
  • या किसी भी तरह मल्टी-रजिस्टर सुविधा का उपयोग करने का सबसे अच्छा तरीका है?

1
vim-easyclip ( github.com/svermeulen/vim-easyclip ) को इस सटीक समस्या का समाधान करने के लिए डिज़ाइन किया गया है
स्टीव वर्म्यूलेन

1
मैंने एक प्रश्न पूछा , अनजाने में (उस समय) आपकी वास्तविक समस्या का डुप्लिकेट , लेकिन शीर्षक प्रश्न का इतना नहीं। टीएल; डीआर - आप viwp( wऑर्ड के लिए) का उपयोग करके जो कुछ भी करते हैं, उसे बदलें ।
OJFord

जवाबों:


429

किसी रजिस्टर में इसे सहेजे बिना कुछ हटाने के लिए, आप "ब्लैक होल रजिस्टर" का उपयोग कर सकते हैं:

"_d

बेशक आप किसी भी अन्य रजिस्टरों का उपयोग कर सकते हैं जो आपके हित में कुछ भी नहीं रखते हैं।


4
पहले तो मुझे लगा कि यह कमांड ठीक से काम नहीं कर रहा है। तब मुझे एहसास हुआ कि मैं अमेरिकी कीबोर्ड के "डेड कीज़" संस्करण का उपयोग कर रहा था। इस कीबोर्ड लेआउट के साथ मुझे टाइप करना है "<space>_d। अंतरिक्ष को वास्तव में "टाइप करने की जरूरत है।"
सेबेस्टियन ग्रिग्नोली

4
केवल खाली लाइनों पर यह चयन करने पर कोई विचार? (यदि मैं ddएक खाली रेखा पर यह ब्लैकहोल में जाता है, अन्यथा यह ddसामान्य की तरह है)।
जोनाथन ड्यूमाइन

6
एक वर्ण को निकालने के लिए, प्रयास करें:"_x
kenorb

54
यह एक ऐसा क्षेत्र है जहां एक मानक पाठ संपादक जीतता है। आप बस डिलीट की दबाएं।
विंस पानसुइयो

22
आप yy'3y' (या जो भी हो) के साथ कुछ भी कर सकते हैं , जो इसे अनाम रजिस्टर में रखता है, लेकिन 0. इसके बाद भी आप इसके साथ चिपकाए रख सकते हैं "0p, इसके dबाद भी इसका उपयोग कर सकते हैं।
हाफगैर

102

हां। पहले "पुराने" पाठ को हटाने की तुलना में यह थोड़ा अधिक जटिल है, लेकिन:

मैं शुरू के साथ ..

line1
line2
line3
line4

old1
old2
old3
old4

I shift+ vलाइन 1, लाइन 2, 3 और 4 का चयन करें, और उन्हें हटाएंd कमांड से

फिर मैं उसी तरह से पुरानी 1-4 लाइनें हटाता हूं।

फिर करो

"2p

वह दूसरी-अंतिम यान्त्र रेखाएँ (पंक्ति 1-4) चिपकाएँगे। "3pतीसरे-से-आखिरी, और इतने पर करेंगे ।।

इसलिए मैं समाप्त करता हूं

line1
line2
line3
line4

संदर्भ: गिने हुए रजिस्टर पर विम दस्तावेज


यदि आप <Shift-v> के साथ लाइनों का चयन करते हैं, तो आप उन्हें केवल d के साथ हटाते हैं, dd नहीं
Heikki Naski

31
हटाने के लिए 1 से 9 काम करता है। अंतिम चीज़ को चिपकाने के लिए वास्तव में ('y' के साथ) आपको "0p" का उपयोग करना होगा। यह उन मामलों में उपयोगी है, जब आप पहली बार किसी चीज़ को बदलने के लिए कुछ करना चाहते हैं, लेकिन फिर कुछ और डिफ़ॉल्ट पेस्ट रजिस्टर को ओवरराइट कर देता है।
राफेल डे एफ। फरेरा


@ RafaeldeF.Ferreira: आपकी टिप्पणी इस सवाल का जवाब नहीं है, लेकिन यह वास्तव में शायद वास्तविक समस्या को हल करता है जिसके कारण ओपी ने सवाल पूछा था। मेरे लिए, यही असली समस्या थी।
0xc0de

76

VIM डॉक्स: क्रमांकित रजिस्टर 0 में सबसे हालिया yank कमांड का टेक्स्ट होता है, जब तक कि कमांड ने दूसरे रजिस्टर को ["x] के साथ निर्दिष्ट नहीं किया है।

जैसे हम "फू" करते हैं और "बार" हटाते हैं - रजिस्ट्री 0 में अभी भी "फू" है! 4. "फू" का उपयोग करके चिपकाया जा सकता है"0p


53

एक आसान मैपिंग करना आसान है जो आपको वर्तमान चयन को बफर से बदलने की सुविधा देता है।

उदाहरण के लिए जब आप इसे अपने .vimrc में रखते हैं

vmap r "_dP       // it's a capital 'p' on the end

फिर, रजिस्टर में कुछ कॉपी करने के बाद (यानी 'y'), आप बस उस पाठ का चयन कर सकते हैं जिसे आप प्रतिस्थापित करना चाहते हैं, और बस अपने कीबोर्ड पर 'r' दबाएं। चयन आपके वर्तमान रजिस्टर के साथ प्रतिस्थापित किया जाएगा।

स्पष्टीकरण:

vmap - mapping for visual mode
"_d - delete current selection into "black hole register"
P - paste

1
एक और अधिक उन्नत संस्करण के लिए, देखें: stackoverflow.com/questions/290465/…
Luc Hermitte 28'09

मैं उपयोग करना चाहते हैंvmap <C-P> "_dP
हैरी ली

7
आप केवल चयन को हटाए बिना पाठ डाल सकते हैं। उदाहरण के लिए Vp, अपनी वर्तमान लाइन को येंक के साथ एक बार में बदल देता है।
बॉबी मारिनॉफ

यह समाधान dउस समस्या को ठीक नहीं करता है जिसे अक्सर हटाने के लिए उपयोग किया जा रहा है।
विक्टर यारमा

35

मैंने निम्नलिखित को अपने vimrc में रखा:

noremap  y "*y
noremap  Y "*Y
noremap  p "*p
noremap  P "*P
vnoremap y "*y
vnoremap Y "*Y
vnoremap p "*p
vnoremap P "*P

अब मैं क्लिपबोर्ड रजिस्टर से मिला और लगा दिया, और डिफ़ॉल्ट रजिस्टर के साथ क्या होता है, इसकी परवाह नहीं की। एक अतिरिक्त लाभ यह है कि मैं अन्य ऐप से कम से कम परेशानी का सामना कर सकता हूं। मैं कुछ कार्यक्षमता खो रहा हूं, मुझे पता है, लेकिन मैं वैसे भी एक से अधिक रजिस्टर / क्लिपबोर्ड का ट्रैक नहीं रख सकता।


6
उन सभी के बजाय, आप भी कर सकते हैं set clipboard=unnamedया set clipboard=unnamedplus, जो डिफ़ॉल्ट क्लिपबोर्ड को क्रमशः, *या +में बदल देता है।
स्टीव

5
@Steve यदि आप ऐसा करते हैं, तो d आखिरी यान को क्लिपबोर्ड रजिस्टर पर भी लिख देगा, जो कि सवाल से बचने की कोशिश कर रहा है।
79E09796

1
@ 79E09796, मेरा मतलब यह नहीं था कि यह होगा; मैं इस जवाब पर टिप्पणी कर रहा था न कि मूल प्रश्न पर।
स्टीव

1
मैंने इन्हें अपने .vimrc में डाला और अब yanking काम नहीं कर रहा है। कोई विचार क्यों?
tba

2
@tba nemoremap (दो n's) के साथ नॉरमैप को प्रतिस्थापित करता है और इसे ठीक काम करना चाहिए।
meain

24

आपके द्वारा दिए गए विशिष्ट उदाहरण के लिए, यदि मैं प्रश्न को समझता हूं तो यह काम कर सकता है:

*Highlight what you want to put somewhere else
*delete (d)
*Highlight the code that you want it to replace
*paste (p)

6
जब आप कई चयनों को चिपकाना चाहते हैं, तब यह अच्छी तरह से काम करता है।

23

सभी यैंक और डिलीट ऑपरेशंस डिफ़ॉल्ट रूप से अनाम रजिस्टर पर लिखते हैं। हालांकि, सबसे हालिया यैंक और सबसे हाल ही में हटाए गए रजिस्टरों में हमेशा (अलग-अलग) संग्रहीत किए जाते हैं। रजिस्टर 0सबसे हाल का यान रखता है। रजिस्टरों 1-9ने 9 सबसे हालिया डिलीट ( 1सबसे हालिया होने के साथ ) को होल्ड किया है ।

दूसरे शब्दों में, एक डिलीट अनाम कोड में सबसे हालिया यंक को ओवरराइट करता है, लेकिन रजिस्टर में यह अभी भी है 0ब्लैकहोल-रजिस्टर ट्रिक ("_ddअन्य उत्तरों में वर्णित ) काम करता है क्योंकि यह अनाम रजिस्टर को ओवरराइट करने से रोकता है, लेकिन यह आवश्यक नहीं है।

आप दोहरे उद्धरण चिह्नों का उपयोग करते हुए एक रजिस्टर का संदर्भ देते हैं, इसलिए सबसे हाल ही में लिखे गए पाठ को इस तरह से चिपका सकते हैं:

"0p

यह एक उत्कृष्ट संदर्भ है:


16

ईबीग्रीन ने जो कहा , उस पर जोर देने के लिए :

यदि आप पाठ का चयन करते समय पेस्ट करते हैं, तो चयनित पाठ को पेस्ट किए गए पाठ से बदल दिया जाता है।

यदि आप कुछ पाठ कॉपी करना चाहते हैं और फिर इसे कई स्थानों पर पेस्ट करना चाहते हैं, तो पेस्ट करें "0p। क्रमांकित रजिस्टर 0 में सबसे हालिया yank कमांड का टेक्स्ट होता है।


इसके अलावा, आप अपने सभी रजिस्टरों की सामग्री को सूचीबद्ध कर सकते हैं:

:registers

उस आदेश से यह पता लगाना आसान हो जाता है कि डब के जवाब जैसा कुछ करते समय आप क्या रजिस्टर चाहते हैं । आप /,%, # रजिस्टर भी देखेंगे। (यह भी देखें :help registers)


और अंत में, बाहर की जाँच करें cWऔर cWएक शब्द बदलने के लिए और एक अनुगामी अंतरिक्ष सहित नहीं। (पूंजी का उपयोग Wविराम चिह्न शामिल है।)


10

यदि आप विम का उपयोग कर रहे हैं, तो आपके पास विज़ुअल मोड होगा, जो चयन करने जैसा है, लेकिन अलग-अलग मोड चीज़ों के साथ जो vi / vim का आधार है।

आप जो करना चाहते हैं वह स्रोत का चयन करने के लिए दृश्य मोड का उपयोग करें, फिर yank, फिर गंतव्य के दायरे का चयन करने के लिए दृश्य मोड का उपयोग करें, और फिर डिफ़ॉल्ट बफ़र से पाठ पर पेस्ट करें।

उदाहरण:

इसके साथ एक टेक्स्ट फ़ाइल में:

1 | Qwer
2 | asdf
3 | ZXCV
4 | poiu

निम्नलिखित अनुक्रम के साथ: ggVjyGVkpआप के साथ समाप्त होगा:

1 | Qwer
2 | asdf
3 | qewr
4 | asdf

व्याख्या की:

  • gg: पहली पंक्ति में जाएं
  • V: संपूर्ण लाइनों के साथ दृश्य मोड शुरू करें
  • j: एक पंक्ति नीचे जाएं (पिछली पंक्तियों पर चयन शुरू होने से यह चयन एक पंक्ति नीचे बढ़ता है)
  • y: डिफ़ॉल्ट बफ़र के लिए yank (दो चयनित लाइनें, और यह स्वचालित रूप से आपको दृश्य मोड से बाहर निकालता है)
  • G: अंतिम पंक्ति पर जाएं
  • V: विज़ुअल मोड शुरू करें (पहले जैसा ही)
  • k: एक पंक्ति ऊपर जाएं (पहले की तरह, दृश्य मोड सक्षम होने से, यह चयन को एक पंक्ति तक बढ़ाता है)
  • p: पेस्ट करें (दो अंतिम पंक्तियों पर चयन के साथ, यह उन पंक्तियों को बदल देगा जो कुछ भी बफर में है - इस मामले में 2 पहली लाइनें)

यह थोड़ा असुविधाजनक है जो आखिरी ब्लॉक को बफर पर रखता है, इसलिए यह किसी भी तरह से एक ही चीज़ के बार-बार चिपकाने के लिए वांछित नहीं है, इसलिए आप स्रोत को नामित बफर को कुछ इस तरह से सहेजना चाहेंगे "ay( जैसे कि बफर नामक " ") और जैसे कुछ के साथ पेस्ट करें "ap(लेकिन तब यदि आप प्रोग्रामिंग कर रहे हैं, तो आप शायद कई बार पेस्ट नहीं करना चाहते हैं लेकिन एक फ़ंक्शन बनाने और इसे कॉल करने के लिए, सही? राइट ?)।

यदि आप केवल vi का उपयोग कर रहे हैं, तो आपको विज़ुअल मोड के बजाय अदृश्य चिह्नों का उपयोग :he markकरना होगा, इस पर अधिक जानकारी के लिए, मुझे क्षमा करें, लेकिन मैं इस अदृश्य चिह्नों वाली चीज़ से बहुत अच्छा नहीं हूं, मैं दृश्य मोड के साथ बहुत दूषित हूं।


10

'शब्द बदलें' के लिए, cwसामान्य मोड में प्रयास करें।

'पैराग्राफ बदलें' के लिए, capसामान्य मोड में प्रयास करें।


1
' अगले पैराग्राफ तक बदलें ' के लिए, c}सामान्य मोड में प्रयास करें।
जाबिराली

"कैप" ऐसा क्यों करता है? "Append" और "पेस्ट" के लिए "a" और "p" स्टैंड नहीं है?
WiSaGaN

2
@WiSaGaN "एप" का अर्थ "एक पैराग्राफ" है: vimhelp.appspot.com/motion.txt.html#object-select
स्वरूप CH

9

आलसी लोगों के लिए एक न्यूनतम आक्रामक समाधान:

रजिस्टर में 0हमेशा अंतिम यांक होता है (जैसा कि राफेल , alex2k8 और idbrii पहले ही उल्लेख किया गया है)। दुर्भाग्य से 0हर समय रजिस्टर का चयन करना काफी कष्टप्रद हो सकता है, इसलिए यदि डिफ़ॉल्ट रूप से pउपयोग "0किया जाता है तो यह अच्छा होगा । यह निम्नलिखित पंक्तियों को अपने में रखकर प्राप्त किया जा सकता है .vimrc:

noremap p "0p
noremap P "0P
for s:i in ['"','*','+','-','.',':','%','/','=','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
    execute 'noremap "'.s:i.'p "'.s:i.'p'
    execute 'noremap "'.s:i.'P "'.s:i.'P'
endfor

पहली पंक्ति प्रत्येक pस्ट्रोक को मैप करती है "0p। हालाँकि, यह pकिसी भी अन्य रजिस्टरों तक पहुँचने से रोकता है। इसलिए pस्पष्ट रूप से चयनित रजिस्टर के साथ सभी स्ट्रोक फॉर-लूप के भीतर समतुल्य कमांडलाइन अभिव्यक्ति के लिए मैप किए जाते हैं। उसी के लिए किया जाता है P

इस तरह मानक व्यवहार संरक्षित है, निहित pऔर Pस्ट्रोक को छोड़कर , जो अब 0डिफ़ॉल्ट रूप से रजिस्टर का उपयोग करते हैं ।

संकेत 1: कट कमांड अब "0dकेवल के बजाय है d। लेकिन जब से मैं आलसी हूं यह मेरे लिए बहुत लंबा रास्ता है;) इसलिए मैं निम्नलिखित मानचित्रण का उपयोग कर रहा हूं:

noremap <LEADER>d "0d
noremap <LEADER>D "0D

लीडर कुंजी \डिफ़ॉल्ट रूप से होती है, इसलिए आप आसानी से टाइप करके \dया टेक्स्ट को काट सकते हैं \D

संकेत 2: बहु-कुंजी मैपिंग के लिए डिफ़ॉल्ट टाइमआउट बहुत कम है। आप एक रजिस्टर का चयन करते समय अधिक समय के लिए इसे बढ़ाना चाह सकते हैं। :help timeoutlenविवरण के लिए देखें, मैं उपयोग कर रहा हूं:

set timeout timeoutlen=3000 ttimeoutlen=100

7

ठीक है, पहले यह कमांड करें:

:h d

तब आपको महसूस होगा कि आप एक विशिष्ट रजिस्टर में हटा सकते हैं। इस तरह आप अपने डिफ़ॉल्ट रजिस्टर में क्या बदलाव करेंगे।


1
["x]d{motion} Delete text that {motion} moves over [into register x]- विम:h d
वेस टर्नर

5

मेरी स्थिति: Normalमोड में, जब मैं xकेरेप का उपयोग करके वर्णों को हटाता हूं , तो वे विलोपन मेरे नवीनतम रजिस्टर को अधिलेखित कर देते हैं - जटिल संपादन जहां मैं xअपने सबसे हाल के रजिस्टर में कुछ का उपयोग करके और कुछ पेस्ट करना चाहता हूं, जैसे कि एक ही पाठ को दो पर चिपकाना और जगह)।

मैंने स्वीकृत उत्तर ( "_d) में सुझाव देने की कोशिश की , लेकिन बात नहीं बनी।

हालाँकि, /vi/122/performing-earch-operations-without-clearing-register पर स्वीकृत उत्तर / टिप्पणियों से , मैंने इसे अपने साथ जोड़ा ~/.vimrc, जो काम करता है (आपको विम को पुनरारंभ करना पड़ सकता है ):

nnoremap x "_x

यही है, मैं अब अपना सामान्य यैंक ( y), डिलीट ( d), और पेस्ट ( p) कमांड्स कर xसकता हूं - और जो चरित्र मैं डिलीट करता हूं, वे अब हाल के रजिस्टरों को आबाद नहीं करते हैं ।


4

पाठ हटाया गया, जबकि इन्सर्ट मोड में, डिफ़ॉल्ट रजिस्टर में नहीं जाता है।


2
लेकिन डिफ़ॉल्ट मोड में पाठ की किसी भी महत्वपूर्ण राशि को हटाना धीमी है
हैमिश डाउनर

3

सही संदर्भों में मेरे द्वारा उपयोग किए जाने वाले दो समाधान हैं;

  • हाइलाइट करें कि आप विम्स VISUALमोड का उपयोग करना चाहते हैं, फिर रजिस्टर पेस्ट करें।

मैं इसे ज्यादातर आदत से बाहर का उपयोग करता हूं क्योंकि मुझे केवल दूसरा समाधान बहुत बाद में मिला, जैसे

yiw   " yank the whole word
viwp  " replace any word with the default register
  • यान करना । इस प्लगइन के साथ आप कीबाइंडिंग <ctrl>+<p>का उपयोग कर सकते हैं, जिसे आपने पहले चिपकाया था, उसके साथ पिछले क्रमांकित रजिस्टर को बदलने के लिए।

मूल रूप से आप के रूप में आप के रूप में चिपकाने के बारे में जाना होगा, लेकिन जब आप महसूस करते हैं कि आप डिफ़ॉल्ट रजिस्टर overwritten के बाद से इस प्रकार खो क्या आप वास्तव में पेस्ट करना चाहते थे आप <C-P>को खोजने के लिए और YankRing इतिहास से बदल सकते हैं!

उनमें से एक में प्लगइन्स होना चाहिए ...



2

विंडोज़ संस्करण (शायद लिनक्स में भी) में, आप सिस्टम की कॉपी / पेस्ट बफर का उपयोग करके "*y(यानी डबल-कोट्स और तारांकन के साथ अपने यैंक कमांड को पूर्ववर्ती) कर सकते हैं।

फिर आप सामान्य रूप से बदली लाइनों को हटा सकते हैं और कॉपी किए गए पाठ का उपयोग कर पेस्ट कर सकते हैं "*p


2

मैं अक्सर एक गलती करता हूं जब 'y'ank' '\ _d'elete को ब्लैक होल में कमांड का पालन करते हुए फिर p'aste। मुझे' y'ank पसंद है, फिर भी मुझे पसंद है, फिर हटाएं '' 0p ' 0 रजिस्टर, जो कि अंतिम कॉपी किए गए पाठ को धकेल दिया जाता है।


2

Emacs- दुष्ट उपयोगकर्ताओं के लिए, फ़ंक्शन (evil-paste-pop)को पेस्ट करने के बाद ट्रिगर किया जा सकता है, और किल-रिंग में पिछली प्रविष्टियों के माध्यम से चक्र किया जा सकता है। मान लें कि आप इसे <C-p>(Spacemacs में डिफ़ॉल्ट) के लिए बाध्य करते हैं , तो आप के रूप में आवश्यक के pरूप में कई के बाद मारा जाएगा <C-p>


1

ड्वोरक उपयोगकर्ताओं के लिए, एक बहुत ही सुविधाजनक तरीका है कि "_ ब्लैक होल रजिस्टर के बजाय" 1 रजिस्टर में अनावश्यक टेक्स्ट को हटा दें, यदि केवल इसलिए कि आप एक ही शिफ्ट प्रेस के साथ + 1 दबा सकते हैं और 1 के बाद से एक तेज पिंकी गति है। ड्वोरक में तुरंत ऊपर "कुंजी (दूसरे हाथ में डी प्लस है, जो पूरे कमांड को नरक के रूप में तेज करता है)।

फिर बेशक, "1 रजिस्टर का उपयोग अन्य चीजों के लिए किया जा सकता है क्योंकि यह सुविधा है, लेकिन जब तक आपके पास पाठ की जगह एक उद्देश्य से अधिक आम नहीं है, मैं कहूंगा कि यह रजिस्टर का एक अच्छा उपयोग है।


1

जब आप आभासी चयन और पेस्ट के माध्यम से एक पाठ को प्रतिस्थापित करते हैं, तो आप उन अनाम नाम को अधिलेखित न करने की प्राथमिक रुचि रखते हैं।

आप निम्नलिखित समाधान का उपयोग कर सकते हैं जो आसान है और मेरे लिए सबसे अच्छा काम करता है:

xnoremap <expr> p 'pgv"'.v:register.'y'

यह उत्तर (और टिप्पणियों) से यहां है: ओवरराइटिंग रजिस्टर के बिना पेस्ट कैसे करें

यह चयन को पहले रखता है, फिर नए पाठ के साथ चयन फिर से (gv) चुना जाता है। अब जो रजिस्टर पिछली बार विजुअल मोड में इस्तेमाल किया गया था (आम तौर पर अनाम रजिस्टर लेकिन अगर आप चिपकाने के लिए किसी अन्य रजिस्टर का उपयोग करते हैं तो साइड इफेक्ट फ्री भी काम करता है)। और फिर नए मूल्य को फिर से रजिस्टर में जमा करें।

पुनश्च: यदि आपको एक सरल संस्करण की आवश्यकता है, जो intellj विचार प्लगइन vim-सिमुलेशन के साथ भी काम करता है, तो आप इसे ले सकते हैं (नकारात्मक पक्ष: अनाम रजिस्टर को ओवरराइट करें, भले ही एक और रजिस्टर चिपकाने के लिए दिया गया हो):

vnoremap p pgvy


1

जो लोग IdeaVim के साथ JetBrans IDE (PhpStorm, WebStorm, IntelliJ IDEA) का उपयोग करते हैं। आप nnoremap d "_dकिसी पंक्ति को हटाने के लिए उसका उपयोग करने और उसका उपयोग करने जैसी समस्याओं का सामना कर रहे हैं dd। आपके लिए संभावित समाधान:nnoremap dd "_dd

Youtrack पर समस्याएँ हैं, कृपया उन्हें वोट करें: https://youtrack.jetbrains.com/issue/VIM-1189 https://youtrack.jetbrains.com/issue/VIM-1363


0

व्यावहारिकता से अधिक जटिलता के लिए विम की सामयिक प्राथमिकता उपयोगकर्ता को कॉपी / हटाए जाने के लिए रजिस्टरों को लागू करने के साथ बोझ डालती है - जब अधिक बार नहीं, तो कोई केवल वही पेस्ट करना चाहता है जो कॉपी किया गया था और जो "हटा दिया गया था"।

हालांकि, विम के जटिल रजिस्टरों से लड़ने के बजाय, उन्हें अधिक सुविधाजनक बनाएं: अपने नवीनतम डिलीट को स्टोर करने के लिए "डिफ़ॉल्ट" रजिस्टर चुनें। उदाहरण के लिए, डी रजिस्टर को डिलीट करें (एड-हॉक उपयोग के लिए एसी को खुला छोड़ दें; डी एक अच्छा मेनेमोनिक है):

nnoremap d "dd           "send latest delete to d register
nnoremap D "dD           "send latest delete to d register 
nnoremap dd "ddd         "send latest delete to d register
nnoremap x "_x           "send char deletes to black hole, not worth saving
nnoremap <leader>p "dp   "paste what was deleted
nnoremap <leader>P "dP   "paste what was deleted

यह दृष्टिकोण क्लोबेरिंग यैंक्स से डिलीट को रोकता है लेकिन BUT ने रजिस्टर को डिलीट करने से मना नहीं किया है - कोई भी इसे ब्लैक होल में खोने के बजाय (वापस आये हुए उत्तर में) पेस्ट कर सकता है। उपरोक्त उदाहरण में, यह रिकॉलिंग दो लीडर पी मैपिंग के साथ की गई है। इस दृष्टिकोण का एक लाभ यह है कि यह आपको यह चुनने की क्षमता देता है कि क्या पेस्ट करना है: (ए) क्या बस याँक गया था, या (बी) जो अभी हटा दिया गया था।


0

रजिस्टर ० थ्रू ९ नवीनतम चीजें हैं जो आप यांक या कट आदि करते हैं, और हटाए गए चीजों आदि को शामिल नहीं करते हैं, इसलिए यदि आप कुछ काटते हैं, तो यह रजिस्टर ० में भी है, भले ही आप उसके बाद पूरे दिन हटाए गए सामान को कहें, ० रजिस्टर करें अभी भी अंतिम सामान है जिसे आपने yanked / cut किया है।

yiv #goes दोनों को डिफ़ॉल्ट रजिस्टर करें, और 0 रजिस्टर करें

यह उस शब्द को इंगित करता है जिसमें कर्सर है

हटाए गए सामान आदि डिफ़ॉल्ट रजिस्टर पर जाएंगे, लेकिन रजिस्टर 0 नहीं

मानक मोड में:

"0p #put रजिस्टर 0 की सामग्री

डालने मोड में:

ctrl-r 0 #put रजिस्टर 0 की सामग्री

मेरा एक दोस्त भी था जो हमेशा एक्स लोल रजिस्टर करने के लिए चिल्लाता / कटता था।

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