सिस्टम के क्लिपबोर्ड से (और कॉपी करने के लिए) नकल कैसे करें?


769

अन्य संपादकों के विपरीत, विम ने अपने क्लिपबोर्ड में पाठ की प्रतिलिपि बनाई। इसलिए, मेरे लिए बहुत मुश्किल है कि मैं किसी वेबपेज के कुछ टेक्स्ट को कॉपी करूं और उसे मौजूदा वर्किंग फाइल में पेस्ट कर दूं। ऐसा होता है कि मुझे या तो gedit खोलना होगा या इसे मैन्युअल रूप से लिखना होगा।

क्या मैं और सिस्टम के क्लिपबोर्ड से विम पेस्ट बना सकता हूं?



7
कॉपी करें "+ y पेस्ट" + p सिर्फ यंक और पेस्ट की तरह काम करता है इसके अलावा आप इससे पहले कि वह रजिस्ट्री को निर्दिष्ट करें।
बंजोकट

2
निम्नलिखित कमांड का उपयोग करने के लिए, सुनिश्चित करें कि आपने किया है sudo apt-get install vim-gnome जो सिस्टम के क्लिपबोर्ड का उपयोग करके उस कार्यक्षमता को इनबिल्ट विम के साथ जोड़ देगा।
हरनीरवीर सिंह

2
@ हरणवीर के पाठकों के कई सेटों के लिए, vim-gnomeशायद उनके ओएस / डिस्ट्रो में ओवरकिल या बस अनुपलब्ध है, जबकि मुझे संदेह है vim-gtkऔर अधिमानतः vim-gtk3कम निर्भरता के मौजूद होने और खींचने की अधिक संभावना है, जबकि अभी भी क्लिपबोर्ड एकीकरण प्रदान कर रहा है (कम से कम उन पर अभी भी X11; मुझे यकीन नहीं है कि कैसे यह सब वेलैंड के साथ बातचीत करता है)।
अंडरस्कोर_ड

3
फेडोरा पर डिफ़ॉल्ट रूप से - कोई क्लिपबोर्ड एक्सेस नहीं है (आपको gvim की आवश्यकता है), superuser.com/questions/194747/…
icc97

जवाबों:


880

"*और "+रजिस्टरों प्रणाली के क्लिपबोर्ड के लिए कर रहे हैं ( :help registers)। आपके सिस्टम के आधार पर, वे अलग-अलग काम कर सकते हैं। उदाहरण के लिए, सिस्टम पर जो X11 जैसे OSX या Windows का उपयोग नहीं करते हैं, "*रजिस्टर का उपयोग सिस्टम क्लिपबोर्ड पर पढ़ने और लिखने के लिए किया जाता है। X11 सिस्टम पर दोनों रजिस्टरों का उपयोग किया जा सकता है। :help x11-selectionअधिक जानकारी के लिए देखें, लेकिन मूल रूप "*से X11 के PRIMARY चयन के अनुरूप है (जो आमतौर पर आपके द्वारा माउस और पेस्ट के साथ मध्य माउस बटन के साथ चुनी गई चीजों को कॉपी करता है) और "+X11 के क्लिपबोर्ड चयन (जो क्लिपर उचित है) के अनुरूप है ।

यदि यह सब आपके सिर पर चला गया है, तो अपने सिस्टम के क्लिपबोर्ड पर एक पंक्ति का उपयोग करने "*yyया "+yyकॉपी करने का प्रयास करें। यह मानते हुए कि आपके पास उपयुक्त संकलन विकल्प हैं, एक या दूसरे को काम करना चाहिए। आप अपने लिए कुछ और सुविधाजनक करने के लिए इसे रीमैप करना पसंद कर सकते हैं। उदाहरण के लिए, आप डाल सकता है vnoremap <C-c> "*yमें अपने ~ / .vimrc ताकि आप नेत्रहीन चयन और प्रेस कर सकते हैं Ctrl+ cआपके सिस्टम के क्लिपबोर्ड झटका।

ध्यान रखें कि सिस्टम क्लिपबोर्ड से कॉपी करना / चिपकाना काम नहीं करेगा अगर :echo has('clipboard')रिटर्न 0. इस मामले में, विम +clipboardफीचर के साथ संकलित नहीं किया गया है और आपको एक अलग संस्करण स्थापित करना होगा या इसे पुनः स्थापित करना होगा। कुछ लिनक्स डिस्ट्रोस डिफ़ॉल्ट रूप से न्यूनतम विम इंस्टॉलेशन की आपूर्ति करते हैं, लेकिन आमतौर पर यदि आप या पैकेज को स्थापित करते हैंvim-gtkvim-gtk3 तो आप अतिरिक्त सुविधाएं प्राप्त कर सकते हैं।

आप भी 'clipboard'वर्णित विकल्प पर एक नज़र रखना चाहते हो सकता है :help cb। इस स्थिति में आप कर सकते हैं :set clipboard=unnamedया :set clipboard=unnamedplusसभी yanking / डिलीट करने की कार्रवाई को स्वचालित रूप से सिस्टम क्लिपबोर्ड पर कॉपी कर सकते हैं। यह कुछ मामलों में असुविधा हो सकती है जहां आप क्लिपबोर्ड में कुछ और स्टोर कर रहे हैं क्योंकि यह इसे ओवरराइड करेगा।

पेस्ट करने के लिए आप ( "+pया "*pफिर, आपके सिस्टम और / या इच्छित चयन के आधार पर) का उपयोग कर सकते हैं या आप इन्हें किसी और चीज़ के लिए मैप कर सकते हैं। मैं उन्हें स्पष्ट रूप से टाइप करता हूं, लेकिन मैं अक्सर खुद को इन्सर्ट मोड में पाता हूं। यदि आप सम्मिलित मोड में हैं, तो आप अभी भी उपयोग करके <C-r><C-p>*या उनके द्वारा उचित इंडेंटेशन के साथ पेस्ट कर सकते हैं <C-r><C-p>+। देख लो :help i_CTRL-R_CTRL-P

यह विम के pasteविकल्प ( :help paste) का भी उल्लेख करने योग्य है । यह एक विशेष "पेस्ट मोड" में विम डालता है जो कई अन्य विकल्पों को निष्क्रिय करता है, जिससे आप आसानी से अपने टर्मिनल एमुलेटर या मल्टीप्लेक्स के परिचित पेस्ट शॉर्टकट का उपयोग करके विम में पेस्ट कर सकते हैं। बस :set pasteइसे सक्षम करने के लिए, अपनी सामग्री पेस्ट करें और फिर :set nopasteइसे अक्षम करने के लिए लिखें । वैकल्पिक रूप से, आप pastetoggleएक कीकोड सेट करने के लिए विकल्प का उपयोग कर सकते हैं जो मोड ( :help pastetoggle) को टॉगल करता है । मैं इन विकल्पों के बजाय रजिस्टरों का उपयोग करने की सलाह देता हूं, लेकिन अगर वे अभी भी बहुत डरावने हैं, तो यह एक सुविधाजनक समाधान हो सकता है, जबकि आप अपनी विम चॉप्स को पूरा कर रहे हैं।

:help clipboardअधिक विस्तृत जानकारी के लिए देखें ।


103
यह बहुत जानकारीपूर्ण है, लेकिन क्या आप संक्षेप में बता सकते हैं कि कीस्ट्रोक्स को सिस्टम क्लिपबोर्ड से चिपकाने के लिए क्या करना होगा ... उदाहरण के लिए एक क्या कर रहा है "*p? क्या मैं Shift- ', फिर Shift-8, फिर p, आदि दबा सकता हूं?
टी। ब्रायन जोन्स

10
हां, उन तीन पात्रों को क्रम से लिखें। Vim में कई कमांड्स "ऑपरेटर पेंडिंग मोड" के रूप में जाने जाते हैं, जहां एक कुंजी को दबाया जाता है और फिर vim अधिक कुंजियों का इंतजार करता है। ddउदाहरण के लिए लें । पहले dऑपरेटर लंबित मोड में प्रवेश करता है, फिर दूसरा dकमांड को पूरा करता है और लाइन को हटा देता है। यदि आप टाइप करते हैं dG, तो , Gयह लाइन को हटाने के बजाय फ़ाइल के अंत तक हटा देता है। रजिस्ट्रर्स इसी प्रिंसिपल का उपयोग विभिन्न कमांडों को उनका उपयोग करने की अनुमति देते हैं।
कोनर

4
अफसोस! अगर मैंने आज से पहले केवल इस पोस्ट को देखा था! यह सब कुछ है जिसे मैं सिस्टम क्लिपबोर्ड से कॉपी और पेस्ट करने के बारे में जानना चाहता हूं। "<Cr> <Cp> * या <Cr> <Cp> +" शुद्ध सोना है।
कीथ पिंसन

54
एक जोर: आपको vim-gtkपैकेज को स्थापित करने की आवश्यकता है (कम से कम, कम से कम), इसके साथ संकलित करने के लिए +xterm_clipboard। मुझे यह पता लगाने के लिए 40mn लिया, और केवल कुछ सेकंड के लिए sudo apt-get install vim-gtk
डोमिनिकाका मोस्टस्किस

3
@DominykasMostauskis vim-gnomeभी काम करता है और +xterm_clipboardसक्षम है।
Chev

155

आप पेस्ट के लिए गनोम-टर्मिनल के शॉर्टकट द्वारा विम में कॉपी कर सकते हैं। फ़ाइल को इन्सर्ट मोड में बनाएँ और उपयोग करें

Ctrl+ Shift+ v

पहले से याद रखें

 :set paste 

खरोज के साथ खिलवाड़ से बचने के लिए।


19
इस गड़बड़ के साथ अगर लूप के लिए अजगर की तरह कई लाइन हैं
Moj

11
डालने मोड के लिए एक पेस्ट टॉगल का उपयोग करें। जैसे सेट पेस्टेटॉगल = <F2> फिर इन्सर्ट मोड में, <F2> को हिट करें और फिर अपना पायथन कोड डालें।
जन वेइट्ज

हाँ + Ctrl + Shift + c के साथ कॉपी करें और othe r फ़ाइल में पेस्ट करें
neel

1
यदि टैब्स / व्हाइट स्पेस, ईओल्स आदि को एक दृश्यमान चरित्र (लिस्टचर्स ऑप्शन के माध्यम से) के रूप में दिखाया जाता है, तो छिपे हुए लोगों के बजाय उन स्थानापन्न वर्णों को कॉपी किया जाएगा।
user907860

2
यह चयनित उत्तर होना चाहिए जिसका संक्षिप्त उत्तर दिया गया है
एडिन

41

लिनक्स

मेरे लिनक्स सिस्टम पर, +और *X11 के चयन के लिए नक्शे को पंजीकृत करता है, जिसे मध्य माउस बटन के साथ चिपकाया जा सकता है। जब :set clipboard=unnamedऔर :set clipboard=unnamedplusतब उपयोग किया जाता है, तो रजिस्टर क्लिपबोर्ड पर मैप करता है, और CTRL-V के साथ चिपकाया जा सकता है।

विनिर्देश कुछ हद तक कॉन्फ़िगरेशन और सिस्टम पर निर्भर प्रतीत होते हैं, इसलिए आपका माइलेज निश्चित रूप से भिन्न होगा। यह निश्चित रूप से आपको सही दिशा में इंगित करना चाहिए, हालांकि।

यह सभी देखें

http://vim.wikia.com/wiki/Accessing_the_system_clipboard


1
केवल *X11 प्राथमिक रजिस्टर (जो आमतौर पर माउस द्वारा चिपकाया जाता है) के नक्शे। +X11 क्लिपबोर्ड के नक्शे सामान्य रूप से शॉर्टकट द्वारा चिपकाए जाते हैं।
ZyX

@ZyX मेरे सिस्टम पर नहीं है, लेकिन आपका माइलेज निश्चित रूप से भिन्न हो सकता है। यदि आप प्लेटफ़ॉर्म और सॉफ़्टवेयर संस्करणों में लगातार अनुभव चाहते हैं, तो स्पष्ट रूप से इच्छित व्यवहार को कॉन्फ़िगर करना सबसे अच्छा है।
टोड ए। जैकबस

मेरा मानना ​​है कि इसका मतलब है कि आपके पास क्लिपर प्रबंधक है जैसे कि klipper / glipper, वे दो बफ़र्स को सिंक्रनाइज़ करने में सक्षम हैं। यह तथ्य यह है कि परिवर्तन नहीं करता है vim का उपयोग करता है *प्राथमिक के लिए और +क्लिपबोर्ड X11 रजिस्टरों के लिए, आप vim स्रोत में देख सकते हैं: इन मूल्यों वहाँ स्थापित कर रहे हैं और कभी नहीं संशोधित, और clip_starऔर clip_plusहमेशा के लिए उपयोग किया जाता है *और +क्रमश: रजिस्टरों।
ZyX

41

मेरे लिए कि कॉन्फ़िगरेशन कॉपी और पेस्ट करने के लिए काम करता है

" copy and paste
vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <ESC>"+pa

किस में पेस्ट किया?
StarWind0

यह IMHO एक बेहतर समाधान है जो बिना नाम के क्लिपबोर्ड को सेट करता है - ओएस क्लिपबोर्ड के साथ हर एक्स / डीडी / वाई आदि कार्यों के साथ गड़बड़ करने के लिए नहीं। और एक मैक पर यह cmd + c / x / v संयोजनों को मैप करने के लिए C (ctrl) संशोधक को D में बदलने के लिए एक बेहतर विचार हो सकता है।
माइंडएक्स

34

यह इस उद्देश्य के लिए आपके vimrc में आवश्यक लाइनें होंगी:

set clipboard+=unnamed  " use the clipboards of vim and win
set paste               " Paste from a windows or from vim
set go+=a               " Visual selection automatically copied to the clipboard

2
मुझे आपका हल पसंद है। मैं बेहतर स्पष्टीकरण चाहूंगा।
ज्योन

अति उत्कृष्ट। रजिस्टर का उपयोग करने से मुझे हमेशा संकोच होता है और सोचना पड़ता है। यह बहुत बेहतर है
जॉनी रा

मेरे विम संस्करण में + क्लिपबोर्ड है और यह विकल्प मेरे लिए काम नहीं करता है। मैं Byobu (जो हुड के नीचे Tmux का उपयोग करता हूं) का उपयोग कर रहा हूं।
GGhe

मुझे फ़ेडोरा के लिए सेट क्लिपबोर्ड + = अनामांकित जोड़ना पड़ा
हकुंन

29

मेरा मानना ​​है कि यह प्रश्न एक अधिक वस्तुनिष्ठ और ग्राफिकल उत्तर के योग्य है:

Paste मोड दर्ज करना

  • ESC
  • : पेस्ट सेट करें
  • दबाएँ i
  • SHIFT+ Insert(आपके क्लिपबोर्ड पर कॉपी किए गए पाठ के साथ)


पेस्ट मोड छोड़ना

  • ESC
  • : nopaste सेट करें
  • दबाएँ i

आपने पाठ चिपकाया और आप फिर से टाइप करने में सक्षम हैं।


1
मुझे यह काम करने के लिए मिला, लेकिन :set nopasteकुछ नहीं करता। यह क्या करना चाहिए है? मुझे इसकी ज़रूरत क्यों है?
मार्को एविलाज़

1
खैर, वास्तव में, यह करता है। जब आप प्रदर्शन करते हैं :set nopaste, तो आप संपादक को बता रहे हैं कि आप अब और पेस्ट नहीं करना चाहते हैं। और व्हीट हिट i, आप संपादन मोड में लौट रहे हैं :)।
ivanleoncz

2
तुम्हारे साथ ईमानदार होने के लिए, मार्को, मुझे नहीं पता।
ivanleoncz

1
SHIFT + सम्मिलित करें ने मेरे लिए इसे बनाया, धन्यवाद!
मेलिसा लूज़

1
यह मेरे लिए एक आकर्षण की तरह काम करता था। जब भी मैं वापस आता हूं, मैं हमेशा इस तरह से कुछ देखने के लिए समाप्त होता हूं।
बेंजामिनडक

17

क्लिपबोर्ड

इस चयन को संग्रहीत करने के लिए एक विशेष रजिस्टर है, यह "* रजिस्टर है। इसमें कुछ भी नहीं डाला गया है जब तक कि पाठ का चयन करने के बारे में जानकारी बदलने के बारे में नहीं है (जैसे बाएं माउस के साथ कहीं क्लिक करें), या जब कोई अन्य अनुप्रयोग करना चाहता है चयनित टेक्स्ट को पेस्ट करें। फिर टेक्स्ट को "* रजिस्टर" में डाल दिया जाता है। उदाहरण के लिए, एक पंक्ति को काटने और इसे वर्तमान चयन बनाने के लिए / इसे क्लिपबोर्ड पर रखें:

    "*dd

इसी तरह, जब आप किसी अन्य एप्लिकेशन से चयन पेस्ट करना चाहते हैं, जैसे, मध्य माउस बटन पर क्लिक करके, चयन को "* रजिस्टर पहले" में डाल दिया जाता है, और फिर किसी अन्य रजिस्टर की तरह 'डाल' दिया जाता है। उदाहरण के लिए, चयन करने के लिए। (क्लिपबोर्ड की सामग्री):

    "*p

रजिस्टर E354

> There are nine types of registers:                      
> 1. The unnamed register ""
> 2. 10 numbered registers "0 to "9
> 3. The small delete register "-
> 4. 26 named registers "a to "z or "A to "Z
> 5. four read-only registers ":, "., "% and "#
> 6. the expression register "=
> 7. The selection and drop registers "*, "+ and "~ 
> 8. The black hole register "_
> 9. Last search pattern register "/

क्लिपबोर्ड से चिपकाएं

1. Clipboard: Copy
2. Vim insertmode, middle mouse key

टर्मिनल में X11- क्लिपबोर्ड समर्थन की जांच करें

जब आप एक टर्मिनल में विम को चलाना पसंद करते हैं तो आपको विम के एक संस्करण की तलाश करनी होगी जो क्लिपबोर्ड समर्थन के साथ संकलित किया गया था। कंसोल से X11- क्लिपबोर्ड समर्थन की जांच करें, टाइप करें:

% vim --version

यदि आप "+ xterm_clipboard" देखते हैं, तो आप जाने के लिए अच्छे हैं।

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

एक्स सर्वर तीन चयनों को बनाए रखता है, जिन्हें कहा जाता है:

प्राथमिक, सेकंडरी और क्लिपबोर्ड

मध्य माउस बटन के माध्यम से नकल और पेस्टिंग को लागू करने के लिए पारंपरिक चयन का उपयोग पारंपरिक रूप से किया जाता है। SECONDARY और CLIPBOARD चयन एप्लिकेशन प्रोग्राम द्वारा कम बार उपयोग किए जाते हैं।

http://linux.die.net/man/1/xsel


12

मैंने उपरोक्त सुझावों की कोशिश की और उनमें से किसी ने भी मेरे वातावरण में काम नहीं किया। (Ssh पर विंडोज पुट्टी क्लोन)

कुछ अतिरिक्त गोलगप्पे बने: /unix/110684/copy-paste-into-sshd-vim-from-local-windows-clipboard

टिप्पणियों में से एक का उपयोग करके सुझाव दिया गया SHIFT+INSERTथा जिसने मेरे डेस्कटॉप के क्लिपबोर्ड से विम के बफर में चिपकाने के लिए चाल चली। Ctrl-Cपहले से ही डेस्कटॉप के क्लिपबोर्ड पर कॉपी करने के लिए काम कर रहा था।


2
मैं cmd ​​टूल [विंडोज़ 8.1] के अंदर विम पर काम कर रहा हूं। जब आप cmder सेटिंग्स> कीज़ और मैक्रोज़> पेस्ट में जाते हैं, तो मुझे सिंगल लाइन पेस्ट के लिए मल्टीलाइन पेस्ट और ctrl + v के लिए Shift + Insert कमांड मिला।
जुबैर आलम

1
मेरे लिए एक साधारण राइट-क्लिक एक आकर्षण की तरह काम करता है !! बस एक राइट क्लिक!
Fr0zenFyr

2
क्योंकि आप एक टर्मिनल का उपयोग कर रहे हैं और ssh vim SSL के माध्यम से आपके मूल सिस्टम के क्लिपबोर्ड तक नहीं पहुँच सकते हैं। SHIFT+INSERTकाम करता है क्योंकि यह आपके टर्मिनल (या आपके मामले में PuTTY) के लिए पेस्ट विकल्प है; हालाँकि, इंडेंटेशन गलत होगा। pasteइसे सही करने के विकल्प के बारे में मेरे उत्तर के अंतिम पैराग्राफ को देखें ।
कोनर

1
@jinksPadlock। धन्यवाद .. हाँ .. मैं माउस के माध्यम से कॉपी / पेस्ट कर सकता हूँ .. यह पता लगाने की कोशिश कर रहा था कि "कीबोर्ड द्वारा" कैसे करना है। विंडोज़ से VIM तक कॉपी करना संभवतः कीबोर्ड द्वारा-केवल पुट्टी का उपयोग करके किया जाता है, लेकिन रिवर्स दिशा में नहीं। विंडोज़ के लिए बैश में .. इसकी दिशा में ऐसा करना संभव नहीं है। लोगों को सही दिशाओं में इंगित करने के लिए संसाधनों की एक सूची तैयार की है और हमारे लिए भी .. यदि आपके पास कुछ भी जोड़ने के लिए है..जबकि आप उन्हें यहां जोड़ सकते हैं: stackoverflow.com/questions/45271895/…
alp_989

1
@ Alpha_989 बाद में बेहतर-से-कभी नहीं;) मैं jinksPadlock में नहीं जोड़ सकता 'के रूप में मैं वर्तमान में मेरी उंगलियों के नीचे एक विंडोज ओएस नहीं है। SHIFT+INSlinux host से ssh vim और साथ ही माउस थर्ड क्लिक भी करता है।
tuk0z

10

+ क्लिपबोर्ड नहीं था इसलिए मैं xsel का उपयोग करके इस वैकल्पिक समाधान के साथ आया:

अपने ~ / .vimrc में जोड़ें:

vnoremap <C-C> :w !xsel -b<CR><CR>


1
इस महान विचार के लिए धन्यवाद! मैंने समाप्त कर दिया:vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
andy

6

उन लोगों के लिए एक त्वरित नोट जिनकी विम स्थापना * और + रजिस्टरों का समर्थन नहीं करती है। क्लिपबोर्ड से चिपकाने के लिए एक नई विम इंस्टॉलेशन डाउनलोड करना आवश्यक नहीं है। यहाँ एक वैकल्पिक तरीका है:

1) पार्सलिंग (एक कम मेमोरी पदचिह्न के साथ एक क्लिपबोर्ड प्रबंधक) स्थापित करें;

2) अपने .vimrc फ़ाइल में, निम्नलिखित जोड़ें:

command Clip r !parcellite -c

3) विम को रिस्टार्ट करें।

अब जब आप इसमें टाइप करेंगे: क्लिप को एक पूर्व कमांड के रूप में, क्लिपबोर्ड की सामग्री को कर्सर पर चिपकाया जाएगा। आप एक फ़ंक्शन कुंजी के लिए नया कमांड भी मैप कर सकते हैं ताकि एक कीस्ट्रोक के साथ ऐसा करने में सक्षम हो।


4

यह मेरे लिए काम करता है: Ctrl+ Shift+V


3
@ नील के जवाब ने पहले ही यह कहा था। यह केवल एक टिप्पणी या बेहतर वोट होना चाहिए, अगर आप कहना चाहते हैं कि यह आपके लिए भी काम करता है।
ericbn

3

इसका सबसे सरल समाधान है, जो विभिन्न लिनक्स मशीनों के बीच भी काम करता sshहै:

  1. जांचें कि क्या विम X-11 क्लिपबोर्ड का समर्थन करता है vim --version | grep clipboard:। यदि यह वापस रिपोर्ट करता है -clipboardऔर -xterm_clipboardआपको vim-gtkया तो स्थापित करना चाहिए vim-gnome( या आर्क लिनेक्स पर gvim)

  2. निम्नलिखित पंक्तियों को अपने साथ जोड़ें .vimrc:

set clipboard=unnamedplus
set paste
  1. यदि आप ssh के माध्यम से किसी अन्य मशीन पर लॉगिन करते हैं, तो विकल्प का उपयोग करें: ssh -Y machine

अब नकल और चिपकाने को एक एकल पर अपेक्षित रूप से काम करना चाहिए, और अलग-अलग मशीनों में केवल yयांक के लिए और pपेस्ट के लिए उपयोग करना चाहिए । एनबी .vimrcउन सभी मशीनों को संशोधित करता है जहां आप इस सुविधा का उपयोग करना चाहते हैं।


मुझे लगता है, कि एक्स सर्वर को काम करने के लिए सर्वर में भी उपलब्ध होना चाहिए। हाँ! इसे vim-gtk द्वारा स्थापित किया जा सकता है। मुझे लगता है, xvfb एक्स सर्वर चलाने के लिए एक वैकल्पिक विकल्प होगा।
Ajeeb.KP

3

मैं पर एक मध्य 2017 मैकबुक प्रो चल रहा है इस मुद्दे में भाग vimभीतर iTerm2मेरी प्राथमिक विकास के वातावरण के रूप में।

जैसा कि अन्य उत्तरों ने सुझाव दिया है, मैंने दौड़कर vim --versionदेखा कि यह वापस आ गया है -clipboard, जिसका अर्थ है कि vimमेरी मशीन के साथ भेज दिया गया संस्करण क्लिपबोर्ड विकल्प के साथ संकलित नहीं किया गया है।

homebrewके लिए पैकेज vimप्रकट होता है के साथ संकलित करने के लिए clipboard, विकल्प तो मेरे लिए ठीक करने के लिए किया गया था:

  1. Daud brew install vim
  2. set clipboard+=unnamedमेरी ~/.vimrcफ़ाइल में जोड़ें
  3. बंद करें और फिर से खोलें iTerm2

3

OS क्लिपबोर्ड पर कॉपी करें

दृश्य मोड में पाठ का चयन करें, दबाएं "*y

OS क्लिपबोर्ड से पेस्ट करें

दबाएँ "*p


2

कोनर के जवाब है, जो महान था, लेकिन से इसे जारी रखते हुए C-R C-p + और C-R C-p *डालने मोड में थोड़ा असुविधाजनक है। Ditto "*pऔर "+pकमांड मोड से।

VIM गुरु ने निम्नलिखित को सुझाव दिया C-vकि C-r C-p +वह क्या करता है।

आप :inoremap <C-v> <C-o>"+pकेवल इन्सर्ट मोड के लिए हो सकते हैं

यदि आप वास्तव में ब्लॉक वाइज विजुअल मोड को ओवरराइड करना चाहते हैं (उसके द्वारा अनुशंसित नहीं है क्योंकि विजुअल मोड अच्छा है) आपके पास हो सकता है map <C-v> "+p


2

यदि आप मैक OSX में विम का उपयोग कर रहे हैं, तो दुर्भाग्यवश यह पुरानी क्रिया के साथ आता है, और क्लिपबोर्ड विकल्पों के साथ अनुपालन नहीं किया जाता है। सौभाग्य से, homebrew आसानी से इस समस्या को हल कर सकता है।

विम स्थापित करें:

brew install vim --with-lua --with-override-system-vim

vim की gui verion स्थापित करें:

brew install macvim --with-lua --with-override-system-vim

प्रभावी करने के लिए टर्मिनल को पुनरारंभ करें।


निम्नलिखित लाइन को जोड़ें ~/.vimrc
set clipboard=unnamed

अब आप लाइन को vim के साथ कॉपी कर सकते हैं yyऔर इसे सिस्टम-वाइड पेस्ट कर सकते हैं ।


2

यदि आप पहले माउस का उपयोग कर रहे हैं

 :set paste 

तब right click mouseऔर बफर में सामग्री को चिपकाया जाएगा


1

सेटिंग के शीर्ष पर :set clipboard=unnamed, आपको वह उपयोग करना चाहिए mvim -vजिसे आप brew install macvimमैक ओएस एक्स 10.9 पर टर्मिनल.एप्प पर उपयोग कर रहे हैं। डिफ़ॉल्ट विम क्लिपबोर्ड विकल्प का समर्थन नहीं करता है।


1

यह भी ध्यान देने योग्य हो सकता है, विम का उपयोग करके OSX पर, आप OSX सिस्टम क्लिपबोर्ड पर कॉपी करने के लिए माउस, Cmd-C के साथ पाठ का चयन कर सकते हैं, और कॉपी किया गया पाठ विम के बाहर क्लिपबोर्ड में उपलब्ध होगा।

दूसरे शब्दों में, OSX इसे मानता है जैसे कि यह एक नियमित विंडो थी, और यही वह जगह है जहाँ बहु-दुर्भावनापूर्ण Apple "कमांड" बटन काम में आता है।

बी-30


1
यह किसी भी अन्य ओएस पर आधे-सभ्य टर्मिनल एमुलेटर के लिए भी सही है। एप्पल को यहाँ कोई फायदा नहीं है।
underscore_d

1

@ Lis2 उत्तर के आधार पर, मैं एक सरल विन्यास का उपयोग करता हूं जो अंत में इन्सर्ट मोड को बाध्य नहीं करेगा:

" Copy and paste
if has('clipboard') && !has('gui_running')
  vnoremap <C-c> "+y
  vnoremap <C-x> "+d
  vnoremap <C-v> "+p
  inoremap <C-v> <C-r><C-o>+
endif

ध्यान रखें कि ये सभी डिफ़ॉल्ट विम मैपिंग को ओवरराइड करते हैं:

  • v_CTRL-C: विजुअल मोड बंद करें
  • v_CTRL-X: संख्या से घटाएँ [गिनती]
  • v_CTRL-V: ब्लॉक वाइज विजुअल मोड
  • i_CTRL-V: शाब्दिक रूप से अगला गैर-अंक डालें, जिसकी मैपिंग भी की गई है i_CTRL-Q

: एक विकल्प के रूप में, एक "झटका" में प्रेरित कुंजी "हटाएँ" और "पुट" विम क्रियाओं का उपयोग कर सकते <C-y>, <C-d>और <C-p>क्रमशः। ये केवल एक डिफ़ॉल्ट मैपिंग को ओवरराइड करेंगे:

  • i_CTRL-P: पूरा करने के लिए पीछे की ओर खोज कीवर्ड

1

आप अपने vimrc, आदि बदलना चाहते हैं अन्य समाधान अच्छे हैं ... लेकिन मैं कॉपी करने के लिए एक आसान तरीका चाहता था से vim को अपने सिस्टम कुंजीपटल। मैंने ये ढूंढ निकाला।

  • वह पाठ चुनें जिसे आप दृश्य मोड के साथ कॉपी करना चाहते हैं v
  • प्रेस :(यह स्वचालित रूप से दिखाने के लिए विस्तारित होगा :'<,'>)
  • सिस्टम क्लिपबोर्ड पर चयनित पाठ को yank करने के लिए ( y * या y + आपके सिस्टम पर निर्भर करता है) टाइप करें


1

चूंकि vim 8 राइट क्लिक डिफ़ॉल्ट रूप से विज़ुअल मोड को सक्षम करता है। यह "सामान्य" कॉपी और पेस्ट को रोकता है (इसे डिज़ाइन द्वारा "दोष" https://github.com/vim/vim/issues/1326 पर कॉल करें )। इसे ठीक करके:

echo "set mouse-=a" >> ~/.vimrc

बाहर निकलें और विम को पुनरारंभ करें।


1

लिनक्स या मैक पर विम 8+ के साथ, अब आप बस ओएस के मूल पेस्ट ( ctrl+shift+Vलिनक्स cmd+Vपर , मैक पर) का उपयोग कर सकते हैं । iइन्सर्ट मोड के लिए प्रेस न करें।

यह आपके ओएस क्लिपबोर्ड की सामग्री को चिपकाएगा, ऑटोइंडेंटिंग को जोड़ने के बिना रिक्त स्थान और टैब को संरक्षित करना। यह पुराने के बराबर है :set paste, i, ctrl+shift+V, esc, :set nopasteविधि।

अब आपको +clipboardया +xterm_clipboardवीम फीचर्स की जरूरत नहीं है। इस सुविधा को "ब्रैकेटेड पेस्ट" कहा जाता है। अधिक विवरण के लिए, टेक्स्ट को विम में पेस्ट करते समय ऑटो इंडेंट को बंद करना देखें


0

जब मैं अपने डेबियन vim का उपयोग करता हूँ जो Gnome (vim --version | grep क्लिप # शो क्लिपबोर्ड सपोर्ट से एकीकृत नहीं है) का उपयोग करता है, तो मैं Shift कुंजी को दबाए रखने और माउस के साथ पाठ का चयन करने के बाद क्लिपबोर्ड पर कॉपी कर सकता हूं, बस किसी भी साथ। अन्य शाप कार्यक्रम। जैसा कि मैंने @ कॉनर की एक टिप्पणी से अवगत कराया, यह टर्मिनल है (मेरे मामले में सूक्ति-टर्मिनल) जो अपने माउस इवेंट रिपोर्टिंग को बंद कर देता है जब यह मेरी शिफ्ट प्रेस को होश में लाता है। मुझे लगता है कि शाप आधारित कार्यक्रम टर्मिनल पर एक निश्चित एस्केप अनुक्रम भेजने के बाद माउस की घटनाओं को प्राप्त कर सकते हैं।


1
यह आपके टर्मिनल का उपयोग कर रहा है, विम नहीं।
कोनर

0

यदि आप खिड़कियों पर हैं और आप सिस्टम क्लिपबोर्ड की सामग्री को पेस्ट करना चाहते हैं pतो इस कमांड को टाइप करें।

:set clipboard = unnamed

इससे मेरी समस्या हल हो गई।


0

ऐसा करने के दो सरल तरीके हैं। अपनी फ़ाइल को इन्सर्ट मोड में बनाएँ और 1) अपने माउस में मध्य बटन (स्क्रॉल व्हील) दबाएँ, या 2) Ctrl + Shift + V


0

कुछ अंतरराष्ट्रीय कीबोर्ड के लिए, आपको एक पाने के लिए "+ दबाना पड़ सकता Spaceहै "

तो उन मामलों में आपको प्रेस करना होगा "Space+yया "Space*yकॉपी करना होगा।

और "Space+pया " Space*pचिपकाने के लिए।


0

मैंने NM पेनीपाइकर के उत्तर का उपयोग किया और 2011 की शुरुआत में मैकबुक प्रो के लिए होमब्रे के माध्यम से विम स्थापित किया:

brew install vim

अब मैं vim के भीतर "* रजिस्टर को कॉपी और पेस्ट करने के लिए" * रजिस्टर का भी उपयोग कर सकता हूं। मुझे अपनी ~ / .vimrc फ़ाइल या $ PATH के भीतर कुछ बदलना नहीं था। Homebrew ने / usr / लोकल / बिन, जैसे उदाहरण में symlinks जोड़ा है। vim -> ../Cellar/vim/8.1.2350/bin/vim

वैकल्पिक, जो पहले काम करता था, पाठ की कुछ पंक्तियों को माउस से चिह्नित करके कॉपी करता है और एक मैक पर कॉपी और पेस्ट (cmd + c, cmd + v) का उपयोग करता है। यह विकल्प केवल तभी काम करता है जब आप जिस पाठ को कॉपी और पेस्ट करना चाहते हैं, वह विम के विंडो के आकार से कम हो। यदि आप संपूर्ण विंडो को चिह्नित करके या cmd + a का उपयोग करके सभी पाठ को कॉपी करना चाहते हैं, तो यह कंसोल के अन्य भागों की नकल करेगा, जो कि विम शुरू करने से पहले लिखा गया है, जो बहुत कष्टप्रद है।

इसलिए, मुझे खुशी हुई कि क्लिपबोर्ड रजिस्टर का उपयोग करके नई विधि मिल गई।

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