विभिन्न उदाहरणों के बीच डेटा की नकल कैसे करें?


41

यदि मैं एक लाइन (के साथ yy) की नकल करने के लिए पहली विम का उपयोग करता हूं, तो मैं दूसरे टर्मिनल के विम (के साथ p) को कैसे चिपकाऊं ? क्या कोई कमांड या सेटिंग्स यह कर सकता है? क्या मैं वैश्विक सिस्टम क्लिपबोर्ड में कॉपी और पेस्ट कर सकता हूं?

मुझे पता है कि निम्नलिखित तरीके संभव हैं, लेकिन मैं एक सरल चाहता हूं:

  1. मैं पहली विम से बाहर नहीं निकलना चाहता और दूसरी विम को फिर से खोलना चाहता हूं।

  2. मैं अलग विंडो (के साथ :sp) का उपयोग नहीं करना चाहता ।

जवाबों:


49

सबसे पहले आपको विम का क्लिपबोर्ड-सक्षम संस्करण स्थापित करना होगा। गैर-ग्राफिकल वातावरण वाले उपयोगकर्ताओं को समायोजित करने के लिए (जैसे कि उबंटू सर्वर उपयोगकर्ता), vimऔर vim-tinyइस क्षमता को कम न करें। आप GVim को इंस्टॉल करना चाहते हैं GVim स्थापित करें, जिसे ग्राफ़िकल या आपके टर्मिनल में लॉन्च किया जाएगा। जीवीएम vimकमांड की जगह लेगा ।

आप टेक्स्ट को पहली कट से 'कट बफर' में जमा कर सकते हैं, और फिर टेक्स्ट को दूसरी विम में पेस्ट कर सकते हैं। वैश्विक कट बफर की प्रतिलिपि बनाने के लिए, +रजिस्टर का उपयोग करें । "कुंजी आपके द्वारा निर्दिष्ट जो उपयोग करने के लिए रजिस्टर जब एक झटका कर या ऑपरेशन पेस्ट करने के लिए अनुमति देता है।

पहले vim में, +रजिस्टर में एक लाइन yank :

"+yy

फिर, +दूसरे विम में रजिस्टर से चिपकाने के लिए :

"+p

उपलब्ध रजिस्टरों पर अधिक जानकारी के लिए, देखें :help registers। आप "+pअपने सिस्टम पर किसी अन्य स्रोत से कॉपी किए गए टेक्स्ट को पेस्ट करने के लिए भी उपयोग कर सकते हैं ।


जो कुछ भी इसके लायक है, यदि आप GVim (पैकेज को vim-gnome की तरह कुछ कहा जा सकता है) स्थापित करते हैं, तो मेनू प्रविष्टियां आपको अक्सर वे कुंजी शॉर्टकट बताएंगी जो वे लागू करेंगे।
zpletan

1
मैं Gvim स्थापित नहीं करना चाहता। मैं यह कैसे करूँ?
trusktr

1
@trusktr वास्तव में यह भी काम करता है। इस प्रश्नोत्तर में यह कहता है कि आपको कम से कम 7.3.74 (जिसका अर्थ है उबंटू 11.10 या बाद का) है।
लुम्ब्रिक

यह किसी भी तरह से काम नहीं कर रहा है यदि आपके पास एक विम को tmux के अंदर शुरू किया गया है और एक अन्य विम को सामान्य रूप से बाहर शुरू किया है - कोई भी मौका जिसे आप जानते हैं कि इस मुद्दे के आसपास कैसे जाना है?
सर्प

"*yy, "*pभी काम करता है। यदि आप हिट करते हैं :reg, तो आप उस स्टार रजिस्ट्री को देखेंगे
elquimista

20

सबसे अच्छा समाधान जो मेरे लिए काम करता था (जिससे मुझे अपनी कीबाइंडिंग आदतों को बदलने की आवश्यकता नहीं है) यहाँ है: https://stackoverflow.com/questions/9166328/how-to-copy-selected-lines-to-clipboard-in.in शक्ति

रख दो:

set clipboard=unnamedplus

अपने में .vimrc


मुझे वास्तव set clipboard=unnamedplusमें GVim स्थापित होने के साथ संयोजन में जोड़ने की आवश्यकता थी । हालाँकि, मैं वास्तविक GVim प्रोग्राम के बजाय Vim के लिए xfce4-टर्मिनल का उपयोग करने में सक्षम था।
जुबेक

9

मुझे बिल का समाधान पसंद है, और मैंने एक मैपिंग बनाई है:

vmap <leader>y :w! /tmp/vitmp<CR>                                                                   
nmap <leader>p :r! cat /tmp/vitmp<CR>

दृश्य मोड में पहला एक / tmp / vitmp में सभी कॉपी करें और दूसरा एक / tmp / vitmp फ़ाइल में से सामग्री की प्रतिलिपि बनाएँ


सरल सीधा समाधान - पुराने फैशन तरीका - धन्यवाद यह मेरे लिए किया
serup

.Vimrc में इसे जोड़ने के बाद मुझे विम में क्या टाइप करना होगा?
विटाली ज़डनेविच

आपको विम सेट करना होगा ताकि आप कॉपी करने के लिए y द्वारा नेता कुंजी अनुसरण का उपयोग कर सकें, नेता कुंजी पी के बाद पेस्ट करें।
समीर सेडेक

1
यह एक काम है। का उपयोग कर "*yसर्वर पर टूटा हुआ लगता है
ospider

अरे मेरा। Ive डॉकटर में tmux में विम का उपयोग करके इस मुद्दे पर घंटों खोज रहा है। मेरा सामान्य vimrc जो पहले से ही अनाम / अनाम नहीं था, ने docker में tmux में vim काम नहीं किया। न ही मुझे इंटरनेट पर कुछ मिला। हालाँकि यह सभी मशीनों पर काम करने लगता है! डॉकटर में, मैक पर और आर्क पर मूल रूप से। धन्यवाद!!
टॉमी

5

मैं विभिन्न यूनिक्स-पारिवारिक मशीनों के बीच घूमता हूं और पाया है कि निम्न क्रम हमेशा मेरे लिए काम करता है:

स्रोत vi सत्र में:

  1. ESC m aपहली पंक्ति को चिह्नित करने के लिए उपयोग करें
  2. ESC m bअंतिम पंक्ति को चिह्नित करने के लिए उपयोग करें
  3. :'a,'b w! xferएक खरोंच फ़ाइल के लिए सीमा लिखने के लिए उपयोग करें

गंतव्य सत्र में:

  1. कर्सर को सम्मिलन लाइन पर ले जाएं
  2. ESC :r xferपाठ में पढ़ने के लिए उपयोग करें

मुझे पता है कि यह सुंदर नहीं है, लेकिन यह हमेशा मेरे लिए काम करता है!


2

इसका वास्तव में काफी सरल: के एक संस्करण स्थापित vimहै कि समर्थन करता है क्लिपबोर्ड। यदि आपकी vimनहीं, तो निम्न में से कोई एक प्राप्त करें:

sudo apt-get install vim-athena
sudo apt-get install vim-gnome
sudo apt-get install vim-gtk

एक बार स्थापित, बस चलाओ vim। आप यह भी सत्यापित कर सकते हैं कि क्लिपबोर्ड को चलाकर सक्षम किया गया है:

 vim --version|grep clipboard

आपको देखना चाहिए +xterm_clipboard


यह उत्तर उस समस्या के दिल को जाता है जो है, क्या आपके संस्करण Vim में क्लिपबोर्ड सुविधा सक्षम है? यदि ऐसा नहीं है, तो इन अन्य उत्तरों में से कोई भी फर्क नहीं पड़ेगा। "Vim --version" करें और "+ क्लिपबोर्ड" देखें। मुझे लगता है कि + xterm_clipboard केवल तभी लागू होता है यदि आपका X11 क्लिपबोर्ड समर्थन चाहता है, लेकिन यदि आप उबंटू पर हैं तो आप भी यही चाहते हैं।
रे

2

आप शायद सभी इस जवाब से नफरत करेंगे। मैं 80 के दशक में विभिन्न यूनिक्स कंप्यूटरों पर vi में काम करता था और हाल ही में लिनक्स में खेलने का अवसर मिला है।

कट और पेस्ट करने के लिए मेरा समाधान मेरे लिनक्स बॉक्स तक पहुंचने के लिए विंडोज पर चलने वाले पुट्टी का उपयोग कर रहा है।

पुट्टी आपको खिड़की से किसी भी txt को कॉपी करने देता है बस उसे हाइलाइट करके। फिर आप किसी अन्य पुट्टी विंडो / सत्र में जा सकते हैं और पेस्ट करने के लिए राइट-क्लिक करें।

आसान नहीं हो सकता। और अब विम है। बहुत बुरा है जो मेरे दिन भर में वापस नहीं आया, इससे मुझे ईमैक माफिया से निपटने में मदद मिली।


1

यह वास्तव में yy का उपयोग नहीं कर रहा है, लेकिन यदि आप उस पाठ का चयन करते हैं जिसे आप माउस से कॉपी करना चाहते हैं (कभी-कभी आपको Shift- [ड्रैग] का उपयोग करने की आवश्यकता हो सकती है), अन्य टर्मिनल विंडो पर स्विच करें और एक [मध्य क्लिक करें] या Shift- [मध्य करें वहाँ क्लिक करें], पाठ आपके वर्तमान प्रविष्टि बिंदु पर डाला जाएगा।

यह अधिकांश कमांड-लाइन और जीयूआई कार्यक्रमों के लिए काम करता है, न केवल विम के लिए।

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