विम में क्लिपबोर्ड की नकल कैसे करें?


752

क्या सीधे विम से क्लिपबोर्ड पर कॉपी करना संभव है? yyकेवल सामान को विम के आंतरिक बफर में कॉपी करता है। मैं OS के क्लिपबोर्ड पर कॉपी करना चाहता हूं। क्या विम में ऐसी कोई आज्ञा है या आप केवल विम के भीतर सामान भर सकते हैं?


139
कृपया एक महत्वपूर्ण तथ्य को स्पष्ट करने वाले अंडर-वोटेड उत्तर को देखें: पहली जगह पर काम करने के लिए नीचे दिए गए सुझावों में से किसी एक के लिए आपको + क्लिपबोर्ड सुविधा के साथ संकलित करना होगा! यह अधिकांश प्रणालियों पर डिफ़ॉल्ट नहीं है।
नील ट्रफ्ट

7
@ नोट, कुछ उत्तर विम से बाहरी कार्यक्रमों तक पाइपिंग का सुझाव देते हैं, इसलिए यह दावा कि किसी भी उत्तर के लिए + क्लिपबोर्ड ध्वज की आवश्यकता है, गलत है। केवल भविष्य के पाठकों को भ्रम से बचाने के लिए इंगित करना।
हन्नट

2
के संभावित डुप्लिकेट कैसे बनाने के लिए से पेस्ट (और करने के लिए नकल) प्रणाली के क्लिपबोर्ड vim? (नोट: दूसरा प्रश्न नया है, लेकिन उसके पास बेहतर उत्तर है IMHO, जिसके कारण मैंने इसे एक
डुप के

5
सुनिश्चित करें कि आपने sudo apt-get install vim-gnome नीचे इन आदेशों को लागू करने से पहले किया है या आपको अमान्य रजिस्टर त्रुटि मिलेगी!
हरनिरवीर सिंह

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

जवाबों:


496

*रजिस्टर ऐसा करेंगे। विंडोज में, +और *समतुल्य हैं। यूनिक्स में एक सूक्ष्म अंतर है +और *:

विंडोज के तहत, * और + रजिस्टर बराबर हैं। X11 सिस्टम के लिए, हालांकि, वे भिन्न होते हैं। X11 सिस्टम के लिए, * चयन है, और + कट बफर (क्लिपबोर्ड की तरह) है। http://vim.wikia.com/wiki/Accessing_the_system_clipboard

*शायद आप सबसे अधिक समय चाहते हैं, इसलिए मैं इसका उपयोग *करता हूं क्योंकि यह दोनों वातावरण में इसकी अपेक्षा करता है।

लिनक्स डिस्ट्रोस में आपको क्लिपबोर्ड कार्यक्षमता प्राप्त करने के लिए पहले vim-gtk(उर्फ gvim) को स्थापित करना होगा। इसका कारण यह है कि गैर-gtk विम आमतौर पर X11 समर्थन के बिना संकलित किया जाता है। यह इसे केवल मशीनों (अक्सर सर्वर) पर कंसोल पर चलने की अनुमति है।

और उन लोगों के लिए जिनके बारे में उलझन में है कि पंजीकरण का उपयोग करते समय यांक करते समय, आप केवल "रजिस्टर का नाम लिखते हैं । तो क्लिपबोर्ड में कुछ कॉपी करने के लिए आप टाइप करें "*yऔर फिर आपको टाइप करने के लिए "*p(क्रेडिट: काइल मैथ्यूज)


31
मैक ओएसएक्स शेर पर काम नहीं करता है। "तब * दबाने के बाद, यह शोर करता है कि मैक तब बनाता है जब आप कुछ नहीं कर सकते। मैं इसे मैक पर कैसे कर सकता हूं?
एड़ी

62
आपको यह भी सुनिश्चित करना होगा कि क्लिपबोर्ड के समर्थन से विम को संकलित किया गया है। उबंटू में डिफ़ॉल्ट विम नहीं है। कोशिश करो vim --version|grep .xterm_clipboard -oऔर अगर यह है -तो आपके पास समर्थन नहीं है। Ubuntuforums.org/showthread.php?t=1686955 के
Sparhawk

66
यदि आप लिनक्स का उपयोग कर रहे हैं, तो आपको +पंजीकरण करना चाहिए । उदाहरण के लिए, यदि आप सिस्टम के क्लिपबोर्ड में तीन पंक्तियों की प्रतिलिपि बनाना चाहते हैं, तो कमांड्स का उपयोग करें v3j"+y, और फिर आप उन्हें किसी अन्य एप्लिकेशन में पेस्ट कर सकते हैं। *लिनक्स के तहत रजिस्टर का उपयोग केवल विभिन्न वीआईएम अनुप्रयोगों के बीच कॉपी और पेस्ट कर सकता है।
diabloneo

6
लिनक्स पर, * रजिस्टर बाहरी रूप से कॉपी और पेस्ट करने के लिए काम नहीं करता है।
weberc2

11
weberc2 और diabloneo, * रजिस्टर चयन क्लिपबोर्ड के लिए है, मध्य क्लिक से सुलभ है, मेनू पेस्ट या ^ V
जिम कीनर

354

मैक OSX पर

  • चयनित भाग की प्रतिलिपि बनाएँ: नेत्रहीन पाठ (प्रकार vया Vसामान्य मोड में) और प्रकार चुनें:w !pbcopy

  • पूरी फाइल कॉपी करें :%w !pbcopy

  • क्लिपबोर्ड से पेस्ट करें :r !pbpaste

पर सबसे लिनक्स Distros, आप स्थानापन्न कर सकते हैं:

  • pbcopyके साथ xclip -i -sel cयाxsel -i -b
  • pbpasteउपयोग xclip -o -sel -cया xsel -o -b
    - नोट: इस मामले में न तो इनमें से कोई भी उपकरण ( xselऔर xclip) आपके डिस्ट्रो पर प्रीइंस्टॉल्ड हैं, तो आप शायद इन्हें रिपोज में पा सकते हैं

1
+1 लायन के साथ काम करता है, हालांकि vim --versionदिखाता है-clipboard
रोपबो

26
vim के साथ संगत है जिसे mavericks osx के साथ शिप किया गया है। अपने .vimrc में जोड़ें vnoremap <C-c> :w !pbcopy<CR><CR> noremap <C-v> :r !pbpaste<CR><CR>इस मैपिंग का उपयोग करने के लिए, यदि आप कॉपी करना चाहते हैं, तो दृश्य मोड में टेक्स्ट हाइलाइट करें और कॉपी करने के लिए Ctrl-c दबाएं। सिस्टम क्लिपबोर्ड से चिपकाने के लिए, Ctrl-v को हिट करें।
दविदिंगसु

7
Linux पर यह काम करता है: w! Xclip -sel c या: w! Xsel -b
trve.fa7ad

4
Linux के लिए Ctrl + C कॉपी: ~ / .vimrc में जोड़ें:vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
andy

3
स्वीकार किए गए की तुलना में कहीं अधिक उपयोगी उत्तर। धन्यवाद!
जॉनसन

165

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

विंडोज सेट पर:

set clipboard=unnamed

लिनक्स सेट पर (vim 7.3.74+):

set clipboard=unnamedplus

नोट: आपको इन काम करने के लिए विम के अप टू डेट संस्करण का उपयोग करने की आवश्यकता हो सकती है।

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


39
अपने नोट के परिशिष्ट के रूप में - आपको इसे काम करने के लिए अतिरिक्त पैकेज भी स्थापित करने पड़ सकते हैं। यदि आपके विम में +xterm_clipboardसुविधा का अभाव है (जब आप दौड़ते हैं तो दिखाई देते हैं vim --version)। मेरे लिए यह मामला था (कुबंटु 12.10 पर चल रहा था)। मुझे vim-gui-commonसही कार्यक्षमता प्राप्त करने के लिए पैकेज स्थापित करना पड़ा ।
जैकब डाल्टन

4
set clipboard=unnamedमैक ओएस 10.11.6 (एल कैपिटन) में विम 7.4 के साथ काम करता है
पर्पलजकेट

1. ड्रैग पर कॉपी करें 2. माउस का चयन करें, मैक सिएरा -10.12.6 और विम-वर्जन में काम करता है: 8.0.1800 ~ / .vimrc फाइल में कमांड को निर्दिष्ट करके set mouse=vऔरset clipboard=unnamed
dkb

set clipboard=unnamedMacOS कैटालिना पर काम करता है
डिएगो सोमर

आप अपने उत्तर को अपडेट करना चाह सकते हैं। यह vim 8.0 के साथ Ubuntu 18.04 पर कार्य नहीं करता है।
लुइस डी सूसा

124

"+सिस्टम क्लिपबोर्ड पर कॉपी करने के लिए रजिस्टर का उपयोग करें (यानी के "+yबजाय y)।

इसी तरह आप "+सिस्टम क्लिपबोर्ड से पाठ प्राप्त करने के लिए (यानी के "+pबजाय p) से पेस्ट कर सकते हैं ।


मैं "* का उपयोग करता हूं, लेकिन ऐसा लगता है कि एक्स में केवल एक अंतर है।
डैश-टॉम-बैंग

3
@ पानी का छींटा-टॉम-धमाके: +/ *अंतर नहीं है SELECTIONबनाम PRIMARYप्रति बफ़र्स (याद नहीं आ रहा है जो जो एटीएम है)
Daenyth

2
हाँ स्टार चयन है, प्लस क्लिपबोर्ड है।
डैश-टॉम-बैंग

6
डबल उद्धरण वर्ण vi और vim में रजिस्टर चयनकर्ता के रूप में कार्य करता है।
अमरदीप AC9MF

1
याद करने के लिए शॉर्टकट के दो सेट: "+yy(क्लिपबोर्ड पर कॉपी लाइन) और "+yy(चयन के लिए कॉपी लाइन); "+p(क्लिपबोर्ड से पेस्ट) और "*p(चयन से पेस्ट)। "रजिस्टर का चयन करना है जो डिफ़ॉल्ट रूप से विम का अपना आंतरिक रजिस्टर है (जिस तरह से yyऔर किसी भी प्रकार के रजिस्टर pको संदर्भित किए बिना काम करेगा )। पुनश्च: मुझे आश्चर्य है कि अगर विम के अपने आंतरिक रजिस्टर के लिए कोई ऐसा चरित्र है, जो डिफ़ॉल्ट रूप से बदल जाता है । "&yyyy

72

@ जेकब डाल्टन ने एक टिप्पणी में इसका उल्लेख किया है, लेकिन किसी ने भी एक उत्तर में उल्लेख नहीं किया है कि विम को क्लिपबोर्ड समर्थन के साथ संकलित करने के लिए यहां वर्णित किसी भी सुझाव के लिए संकलित किया जाना है। मेरा मैक ओएस एक्स पर डिफ़ॉल्ट रूप से उस तरह से कॉन्फ़िगर नहीं किया गया था और मुझे विम का पुनर्निर्माण करना पड़ा। यह जानने के लिए कि क्या आपके पास है या नहीं, इस कमांड का उपयोग करें vim --version | grep 'clipboard'+clipboardइसका मतलब है कि आप अच्छे हैं और यहां दिए गए सुझाव आपके लिए काम करेंगे, जबकि -clipboardइसका मतलब है कि आपको पुन: निर्माण करना होगा और विम का पुनर्निर्माण करना होगा।


15
या, अपने आप को संकलित करने के बजाय, आप एक विम पैकेज स्थापित कर सकते हैं जो पहले से ही क्लिपबोर्ड समर्थन के साथ बनाया गया है। OS X पर, Homebrew के पास यह है brew install vim:। उबंटू पर, आप उपयोग कर सकते हैं sudo apt-get install vim-gnome। अन्य (गैर-GNOME) लिनक्स डिस्ट्रोस पर आप बल्कि इंस्टॉल vim-gtkया कर सकते हैं vim-athena
नील ट्रफ

3
धन्यवाद, आर्क लिनक्स में मुझे wiki.archlinux.org/index.php/Vim#Installationvimgvim
michalzuber

आपके उत्तर बता रहे हैं कि क्यों yank क्लिपबोर्ड के साथ काम नहीं करता है, केवल आपकी जानकारी के साथ मैं एक बेहतर Google खोज कर सकता हूं और इसे आसानी से काम कर सकता हूं। और अब यह काम कर रहा है। बेहतर होगा कि आप अपने उत्तर में @NeilTraft टिप्पणी भी शामिल करें ताकि लोगों को Google खोज करने की आवश्यकता न हो।
याना अगुन सिसवंतो

मैक पर, ठीक इसके बाद brew install vimमैंने set clipboard=unnamed.vimrc में जोड़ा । source ~/.vimrcकमांड लाइन में चलाएं । .Bash_profile में मैंने alias vim="/usr/local/bin/vim"फिर जोड़ा source ~/.bash_profile। अब विम का उपयोग करें yऔर pकॉपी / पेस्ट करने के लिए
दिमित्री

59

ऊपर जा रहा है और newbies के लिए यह आसान बना,

वर्तमान मोड में कमांड मोड टाइप करने के लिए:

"*yy

कमांड मोड में, पूरी फाइल / बफर को कॉपी करने के लिए, पहले शुरुआत में जाएं gg, फिर टाइप करें

"*yG

जैसा कि उल्लेख किया गया है, इसके लिए आवश्यक +clipboardहै vim --version, जो क्लिपबोर्ड समर्थन की उपलब्धता को इंगित करता है, -clipboardइसका मतलब है कि नहीं।


1
"*5yyकहते हैं, 5 lines yankedलेकिन क्लिपबोर्ड में कुछ भी नहीं? ओएस / एक्स।
जवाद

2
हां, मैंने + क्लिपबोर्ड सत्यापित किया था
javadba

nnoremap <leader>c "* में .vimrcकाम करता है बहुत अच्छी तरह से के रूप में एक तरह की "कॉपी", एक गति पाठ वस्तु आप अपने ओएस क्लिपबोर्ड में प्रतिलिपि बनाना चाहते हैं हड़पने के लिए किया जाता है।
cpk 20

धन्यवाद, आपने इसे ठीक उसी तरह समझाया जैसे मुझे इसकी आवश्यकता थी।
सायन टिम्मरमन्स

3
मैं काम करने की तुलना में vim-gtkबदल -clipboardगया । +clipboard"+yy
1732 में लाई 32290

30

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

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

brew install vim

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

brew install macvim

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


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

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



अपडेट की गई विधि :

मैं वर्षों से सेट क्लिपबोर्ड विधि से संतुष्ट नहीं था। सबसे बड़ी कमी यह है कि आपके क्लिपबोर्ड के इतिहास को गड़बड़ कर देगा, तब भी जब आप xहटाने के लिए उपयोग करते हैं। यहां एक बेहतर और अधिक सुरुचिपूर्ण समाधान है।

  1. सिस्टम क्लिपबोर्ड में vim के टेक्स्ट [रेंज] को कॉपी करें। (संकेत: पहले सीमा का उपयोग करने के लिए vया Vफिर श्रेणी का चयन करने के लिए और फिर :पूर्व कमांड को सक्रिय करने के लिए कोलन टाइप करें ):
    :[line-range]yank +
    उदाहरण के लिए,
    :5,10y * (कॉपी / यैंक लाइन्स 5-10 से सिस्टम क्लिपबोर्ड *रजिस्टर में)

  2. सिस्टम क्लिपबोर्ड से सामग्री को एक नई लाइन पर चिपकाएँ:
    :put +

ध्यान दें:

  1. यदि आप एक शब्द सीमा का चयन करते हैं, तो उपरोक्त काम नहीं करेगा। इस दृश्य ब्लॉक को क्लिपबोर्ड पर सहेजने के लिए "* y या " + y का उपयोग करें । हालांकि यह लिखना कठिन है, मैं अभी भी विकल्पों के बारे में सोच रहा हूं।
  2. : अधिक जानकारी के लिए "* या : मदद * + की मदद लें
  3. brew info vimविम स्थापित करने के लिए अन्य विकल्प देखने में सक्षम होंगे। Currrently इसके पास कोई अन्य विकल्प नहीं है।

--with-override-system-vimहोना चाहिए--with-override-system-vi
maffo

मैं न्यूनतम सिस्टम पर बहुत सारे Xorg सामान स्थापित करने से बचने के लिए यह कोशिश करना चाहता हूं, लेकिन मुझे कुछ याद आ रहा है। V मोड में चयन करने के बाद मुझे "एडिटर कमांड [रेंज] यैंक +" नहीं मिलता है और फिर ":" मार दिया जाता है।
jeremyjjbrown 15

29

उबंटू के लिए - जुलाई 2018

सिस्टम क्लिपबोर्ड पर कॉपी करने के लिए रजिस्टर "+ का उपयोग करें (यानी " y के बजाय + y )।

इसी तरह आप सिस्टम क्लिपबोर्ड से टेक्स्ट प्राप्त करने के लिए "+ से पेस्ट कर सकते हैं (यानी पी के बजाय " + पी )।

आपको यह भी सुनिश्चित करना होगा कि क्लिपबोर्ड के समर्थन से विम को संकलित किया गया है। प्रयत्न:

vim --version | grep .xterm_clipboard -o 

और अगर यह -xterm_clipboard (एक ऋण पूर्वसर्ग) है, तो आपके पास समर्थन नहीं है।

यहां vim के वर्किंग वर्जन के साथ स्वैपिंग के लिए कुछ निर्देश दिए गए हैं जिसमें क्लिपबोर्ड सपोर्ट है।

  • $ सुडो एप-गेट पर्ज विम
  • $ sudo apt-get autoremove (सिस्टम से किसी एक्स्ट्रॉनस विम डिपेंडेंसी पैकेज को हटाता है)
  • $ sudo apt-get install विम-सूक्ति

फिर से जांचें vim --version | grep .xterm_clipboard -oऔर आप पुष्टि कर सकते हैं कि क्लिपबोर्ड अब उपलब्ध है (यानी। + xterm_clipboard )

सौभाग्य।


3
आपने मेरा दिन बना दिया, या शायद मेरा महीना। उबंटू में सालों से क्लिपबोर्डलेस विम के साथ काम करने के बाद, यह एक अद्भुत एहसास है। arcseldon, धन्यवाद !!
evanrmurphy

ऊपर वर्णित के अलावा, मुझे set clipboard=unnamedplusअपनी .vimrcफाइल को काम करने के लिए यान के लिए रखना पड़ा । मैं Ubuntu 18.04 का उपयोग कर रहा हूं।
एलिजा

23

मैं अपने क्लिपबोर्ड के सिस्टम में कॉपी नहीं कर पाया क्योंकि मेरे पास मेरी ~ / .vimrc फाइल में यही था।

 if has('mouse')
   set mouse=a
 endif

लेकिन अगर आप इस पंक्ति को आगे जोड़ते हैं, तो यह आपको बस Ctrl+c को अपने क्लिपबोर्ड में चयनित करने के लिए अनुमति देगा ।

vmap <C-c> "+y

मूल चर्चा और अधिक विवरण: सेट माउस से पाठ कॉपी करें = एक सक्षम


3
मैंने अपने .vimrc में लाइन नहीं जोड़ी, लेकिन आपके द्वारा दिया गया लिंक बहुत उपयोगी था। यदि आप पाठ को vim में चयन करते समय SHIFT दबाए रखते हैं, तो आप दृश्य मोड में प्रवेश किए बिना पाठ को कॉपी कर सकते हैं। तो धन्यवाद और +1।
स्टेफन वैन डेन अककर

शिफ्ट ट्रिक जो मुझे चाहिए थी। टर्मिनेटर जैसे संपादकों के साथ काम करता है जो प्रॉम्प्ट में कॉपी करने के लिए Ctrl + Shift + c का उपयोग करते हैं, जो कि मैंने पहले प्रयास किया था। मैंने vim के साथ -xterm_clipboard स्थापित किया था।
एंडर्स एल्मग्रेन

18

मेरे लिए समाधान अतिरिक्त वीम स्थापित करना था जिसमें क्लिपबोर्ड विकल्प शामिल है: 

sudo apt-get install vim-gnome

3
यह वही है जो मुझे Ubuntu 16.04 के लिए करना था। मैंने सफलता के बिना अन्य सुझावों की कोशिश की। यह सबसे आसान था और मैंने वही किया जिसकी मुझे उम्मीद थी "+ y।
स्टीवन एकॉफ

यह किसी भी बदलाव के बिना एक आकर्षण की तरह काम करता है! उबंटू में अभी भी वैध है 16.04
मेकरज

"+yसुझाव केवल के साथ काम किया vim-gnome। लिनक्स मिंट 18.2 का उपयोग करना।
समरसा

14

यदि आप जीवीएम का उपयोग कर रहे हैं, तो आप भी कर सकते हैं set guioptions+=a। यह पाठ की क्लिपबोर्ड पर स्वचालित प्रतिलिपि को ट्रिगर करेगा जिसे आप दृश्य मोड में हाइलाइट करते हैं।
दोष: ध्यान दें कि उन्नत क्लिपबोर्ड प्रबंधक (इतिहास के साथ) इस मामले में आपके सभी चयन इतिहास प्राप्त करेंगे ...


13

आप यहां आर्च विकी के जवाब पा सकते हैं

लिनक्स के लिए: सबसे पहले आपको इंस्टॉल करके अपने वीम वर्जन में क्लिपबोर्ड को इनेबल करना होगा gvim


आगे आपको यह लाइन अपनी .vimrcफाइल पर लगानी होगी।

set clipboard=unnamedplus


+1, हैरान था कि अब इस कदम की आवश्यकता है। मेरे पिछले सभी आर्क इंस्टॉलेशन में मुझे ऐसा करने की जरूरत नहीं थी।
कॉन्स्टेंटिनोस

ubuntu 18.04 के लिए भी काम किया और tmux में चल रहा है। धन्यवाद!
जेम्स

10

यदि आपका विम बिना किसी +xterm_clipboardविकल्प के संकलित होने की तरह है, तो यह डिबियन में डिफ़ॉल्ट रूप से है और मुझे लगता है कि उबंटू है, तो आप बाहरी प्रोग्राम जो डेस्कटॉप क्लिपबोर्ड को संभालते हैं, चयन या पूरे बफर को पाइप कर सकते हैं। के लिए xclip(जिसे आपको पहले स्थापित करने की आवश्यकता हो सकती है), कमांड होगा:w !xclip -sel clip


1
इसके लिए धन्यवाद - इसने मेरे लिए उबंटू पर काम नहीं किया है (इसलिए आपके उबंटू अनुमान की पुष्टि सही है) उम्र के लिए और मुझे पता नहीं क्यों। अब -xterm_clipboardजब मैं दिखाई गई झंडियों में देख सकता हूँ vim --version
रमेश

इसने मुझे क्लिपबोर्ड समर्थन का एक अच्छा स्रोत खोजने में मदद की: vimcasts.org/blog/2013/11/getting-vim-with-clipboard-support
jamesc

9

केवल ubuntu टर्मिनल के तहत विम में,

टर्मिनल पर shift + drag mousevim में पाठ का चयन करने के लिए दबाएँctrl + shift + c

तो ctrl + vअन्य संपादक पर


3
यह केवल वही दृश्य चुनने के लिए काम करता है जो दृश्य में है, यदि आप संपूर्ण फ़ाइल का चयन करना चाहते हैं तो क्या होगा?
गेरेप

@ यह विधि संपूर्ण फ़ाइल चयन के लिए काम नहीं करती है। यह केवल vim टर्मिनल पर पाठ के एक खंड का चयन करने के लिए अच्छा है और जहां पाठ टर्मिनल स्क्रीन पर प्रदर्शित होता है।
सुपावत पुसवन्नो

1
यह प्रतियां केवल पाठ / कोड के बजाय पंक्ति संख्या, बंटवारे की सीमाओं और दिखाई देने वाली सभी सीमाओं की है।
ज़ेलफिर कलस्टहल

9

यदि आपके पास क्लिपबोर्ड पर पाठ को कॉपी करने का एक आसान तरीका है, तो निम्नानुसार है:

  1. यांक पाठ जिसे आप कॉपी करना चाहते हैं। ( yवेनिला विम में कमांड)
  2. में टाइप करें :call system("xclip -selection clipboard", @")

:call system()एक टर्मिनल कमांड चलाता है। यह दो तर्क लेता है, पहला कमांड, दूसरा उस कमांड को क्या करना है। उदाहरण के लिए :echom system("head -1", "Hello\nWorld")हैलो (कुछ पैडिंग के साथ) लौटाता है। echom कमांड का आउटपुट देता है, कॉल नहीं करता है।

xclip -selection clipboard डिफ़ॉल्ट क्लिप क्लिपबोर्ड के विपरीत सिस्टम क्लिपबोर्ड में पाठ को कॉपी करता है, (मध्य माउ बटन द्वारा अभिगमन)।

@"अंतिम याँकित पाठ लौटाता है। "डिफ़ॉल्ट रजिस्टर है, लेकिन आप किसी भी रजिस्टर का उपयोग कर सकते हैं। सभी रजिस्टरों की सामग्री को देखने के लिए, टाइप करें :registers


2
यह अधिक मजबूत है, यह तब भी काम करता है जब क्लिपबोर्ड और किसी ओएस पर समर्थन के साथ विम का अनुपालन नहीं किया जाता है। उदाहरण के लिए, मैक रन पर :call system("pbcopy",@")। कोई इस कमांड को कुंजी से बाँध सकता है।
ilija139

यह ठीक काम करता है, लेकिन क्या मैं इसे अपने vimrc में डाल सकता हूं, क्या यह काम करेगा। यह मेरे लिए काम नहीं कर रहा है।
तत्पश्चातवला

4

शायद किसी को यह उपयोगी लगेगा। मैं एक्स क्लिपबोर्ड से स्वतंत्र रहना चाहता था, और अभी भी दो चलने वाले vims के बीच कुछ पाठ को कॉपी और पेस्ट करने में सक्षम हो सकता हूं। यह छोटा कोड कॉपी करने के लिए टेम्प्लेट में चयनित टेक्स्ट को सेव करता है। नीचे दिए गए कोड को अपने .vimrc में डालें। नौकरी करने के लिए CTRL-c CTRL-v का उपयोग करें।

vnoremap: w! cp / dev / null ~ / temp.txt && cat> ~ / temp.txt

नॉरमेप: आर! कैट ~ / temp.txt


4
  1. set clipboard=unnamedअपने में रखो vimrc
  2. आप जो भी Visualमोड में कॉपी करना चाहते हैं उसे चुनें (एंटर करने के लिए v दबाएं)।
  3. वापस Normalमोड (प्रेस से बच [esc]), y को कॉपी करने के लिए दबाएँ।
  4. यदि आप OS के क्लिपबोर्ड से कुछ पेस्ट करना चाहते हैं, तो V Normalमोड में p / P दबाएं ।

4

मैं एक नया हूँ, लेकिन, सिस्टम क्लिपबोर्ड के सभी पाठ को कॉपी करने के लिए (जैसे यदि आप इसे वर्ड प्रोसेसर या किसी अन्य टेक्स्ट एडिटर जैसे कि gedit, mousepad आदि ...), सामान्य मोड में पेस्ट करना चाहते हैं:

ggVGy

या, और अधिक:

:% Y

जैसा कि सुझाव दिया गया है, मैंने भी विम-gtk और पुट स्थापित किया

क्लिपबोर्ड सेट करें = अनाम नहीं है

मेरे .vimrc में

और सब कुछ ठीक काम करता है

यदि आप केवल पाठ के एक हिस्से को कॉपी करना चाहते हैं, तो दृश्य मोड (v) का उपयोग करें, उस पाठ का चयन करें जिसे आप कॉपी करना चाहते हैं और y दबाएं ।

अंत में, मेरा सुझाव है कि क्लिपमैन (मेरा पसंदीदा), क्लिपिट, पार्सलर या इसी तरह का एक क्लिपबोर्ड कार्यक्रम।

(मैं डेबियन खिंचाव Xfce में विम 8.0 का उपयोग कर रहा हूं)

मुझे मेरी अंग्रेजी के लिए माफ कर दो! :-)


4

यह उत्तर मैक उपयोगकर्ताओं के लिए विशिष्ट है।

मैक के साथ उपलब्ध डिफ़ॉल्ट वीआईएम क्लिपबोर्ड विकल्प सक्षम के साथ नहीं आता है। सिस्टम क्लिपबोर्ड तक पहुंचने के लिए आपको उस विकल्प की आवश्यकता होती है।

यह जांचने के लिए कि क्या आपके विकल्प में वह विकल्प है जो नीचे दिए गए कमांड का उपयोग करता है

vim --version

परिणाम में, आपके पास होना चाहिए +clipboard । यदि यह है -clipboard, तो आपके VIM के पास सिस्टम क्लिपबोर्ड तक पहुँचने का विकल्प नहीं है।

आपको अपनी जरूरत के विकल्प के साथ अपना VIM बनाना और स्थापित करना होगा। निम्नलिखित आदेश हैं।

# Create the directories you need
$ sudo mkdir -p /opt/local/bin
# Download, compile, and install the latest Vim
$ cd ~
$ git clone https://github.com/vim/vim.git
$ cd vim
$ ./configure --prefix=/opt/local
$ make
$ sudo make install
# Add the binary to your path, ahead of /usr/bin
$ echo 'PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
# Reload bash_profile so the changes take effect in this window
$ source ~/.bash_profile"

उपरोक्त विकल्प के साथ नवीनतम VIM स्थापित करेगा +clipboard सक्षम ।

अब आपको सिस्टम क्लिपबोर्ड सेट करने की आवश्यकता है। निम्नलिखित लाइन को इसमें जोड़ें~/.vimrc

set clipboard=unnamed

अब आप टेक्स्ट को सिस्टम क्लिपबोर्ड पर भेज सकते हैं। नीचे दिए गए चरण बताते हैं कि कैसे करें।

  1. Vim कमांड मोड में press v , यह आपको VISUAL मोड में बदल देगा।
  2. पाठ या उन पंक्तियों का चयन करने के लिए कर्सर को चारों ओर ले जाएं जिनकी आपको प्रतिलिपि बनाने की आवश्यकता है।
  3. Press y, यह चयनित पाठ को क्लिपबोर्ड पर कॉपी कर देगा।
  4. किसी भी बाहरी एप्लिकेशन पर जाएं और CMD + vपेस्ट करें।

मैं मैकबुक का उपयोग करता हूँ Pro macOS Mojave के साथ और इसमें उपरोक्त कार्य।


3

मेरे पास समस्या थी क्योंकि मेरा विम क्लिपबोर्ड का समर्थन नहीं कर रहा था :

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

मैंने vim-gnome (जो क्लिपबोर्ड का समर्थन करता है) स्थापित किया और फिर दोबारा जाँच की:

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

अब मैं क्रमशः "+ y और" + p का उपयोग करके कॉपी और पेस्ट करने में सक्षम हूं।


3

मैं कीबोर्ड शॉर्टकट्स का उपयोग करके MacOsX पर अब तक महीनों से इससे जूझ रहा हूं। मुझे पता है कि प्रश्न कीबोर्ड के शॉर्ट्स का उपयोग करने के बारे में नहीं है। लेकिन यह उसी चिंता के साथ किसी की मदद कर सकता है।

मैंने पाया कि यदि आप अनचेक करते हैं:

देखें -> माउस रिपोर्टिंग की अनुमति दें

टर्मिनल मेनू से, आप क्लिपबोर्ड का उपयोग करके कॉपी कर पाएंगे

command + c

फिर।


2

मैंने अपने काम को कॉपी करने के लिए अपने .vimrc में एक सरल लाइन लिखी। आशा है कि यह किसी की मदद करता है। मेरा विम क्लिपबोर्ड समर्थन के साथ स्थापित नहीं है, दुर्भाग्य से, इसलिए इनमें से किसी भी सुझाव ने मेरे लिए काम नहीं किया। मूल रूप से, इस लाइन को अपने .vimrc में चिपकाएँ:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

यदि आप इसके बारे में विवरण पढ़ना चाहते हैं, तो आप मेरे ब्लॉग पर इसके बारे में पढ़ सकते हैं


1
सावधान ग्राहक। मैक पर, यह अजीब प्रभाव डालता है।
अज़ातार

निर्देश के रूप में उपयोग करते समय क्लिपबोर्ड पर कुछ भी कॉपी करना प्रतीत नहीं होता है (लिनक्स ubuntu 16.04 पर, कोई क्लिपबोर्ड समर्थन नहीं), और यदि कई फाइलें एक विम सत्र में खोली जाती हैं, तो उस टैब को बंद कर देगी जहां कार्रवाई की गई थी (दृश्य चयन और सीसी )।
कैलोकेड्र्स

2

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

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


2

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


1

OSX के लिए, ऊपर स्पष्ट किए गए 10342 उत्तरों की तरह, आपको यह सुनिश्चित करने की आवश्यकता है कि vim क्लिपबोर्ड सुविधा का समर्थन करता है, ने कहा कि जो OSX के साथ पूर्व-शिप आता है वह क्लिपबोर्ड का समर्थन नहीं करता है, और यदि आप चलते हैं brew install vim इसे तो यह काम करेगा।

सिवाय इसके कि चल रहे vi अभी भी आपको बनाए गए OSX संस्करण को चलाएंगे, न कि आपके द्वारा स्थापित किया गया।

इस पर पाने के लिए, मैं बस अपने vim कमांड को ब्रू संस्करण में देता हूं, न कि OSX को डिफ़ॉल्ट:

alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"

और अब मैं सुनहरा हूँ


1

मेरा समाधान निम्न लाइन को .vimrc में डाल रहा है:

map <C-y> :w !xclip -sel c <CR><CR>

स्क्रिप्ट चयनित लाइन (गर्त दृश्य मोड) या फ़ाइल सामग्री (यदि कोई नहीं चुना गया है) को Ctrl + y का उपयोग करके क्लिपबोर्ड पर कॉपी करता है। मैं Manjaro लिनक्स का उपयोग कर रहा हूँ अगर वह मायने रखता है।


1

मैं मैक ओएसएक्स (10.15.3) पर हूं और विम के लिए नया हूं। मुझे यह बहुत निराशाजनक लगा और यहाँ पर सभी उत्तर बहुत जटिल और / या मेरी स्थिति पर लागू नहीं हुए। मैंने 2 तरीकों से इस काम को पूरा किया:

  1. कुंजी मानचित्रण जो pbcopy का उपयोग करता है : विम के पुराने संस्करण पर काम करता है जो मैक के साथ जहाज करता है।

    vmap '' :w !pbcopy<CR><CR>अपने ~ / .vimrc में जोड़ें
    अब आप ''क्लिपबोर्ड पर कॉपी करने के लिए नेत्रहीन चयन और हिट (दो एपोस्ट्रोफिस) कर सकते हैं

  2. विम का नया संस्करण स्थापित करें ताकि मैं अन्य उत्तरों में सुझाए गए समाधान का उपयोग कर सकूं:

    brew install vim
    alias vim=/usr/local/bin/vim(इसे अपने ~ / .bashrc या समतुल्य में जोड़ना चाहिए)
    अब आप "+yyक्लिपबोर्ड पर कॉपी करने के लिए नेत्रहीन चयन और हिट कर सकते हैं


बहुत अच्छा समाधान!
एबीडी

0

selectingकी मदद से mouseऔर right-click copyमेरे मामले में काम किया।

मैं लाइन नंबर नहीं चाहता था, इसलिए मैं :set nonumberपहले भी शामिल था copying


nddTree में आप ऐसा कैसे कर सकते हैं
ji-ruh

जिसका विम से कोई लेना देना नहीं है और यह एक्स (एक्स) क्लिपबोर्ड के लिए विशेष रूप से एक टर्मिनल आधारित कॉपी है।
कार्लो वुड

मुझे यकीन नहीं @ ji-ruh
आकाश

0

ऊपर कुछ भी नहीं मेरे लिए मेरे विंडोज़ लैपटॉप पर काम किया।

Ctrl+ Cनकल के लिए ठीक था .. लेकिन मुझे जरूरत थी Shift+Insert पेस्ट करने के लिए!

(हमेशा एक लैपटॉप प्राप्त करने का एक अच्छा कारण जहां Insertमाध्यमिक कुंजी दबाए बिना हमेशा एक्सेस किया जा सकता है)


0

Shift+ Ctrl+ C यदि आप लिनक्स के चित्रमय मोड में हैं, लेकिन पहले आपको यह चुनना होगा कि आपको क्या कॉपी करने की आवश्यकता है।

यहां छवि विवरण दर्ज करें

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