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


85

विम में क्लिपबोर्ड पर चयनित लाइनों की प्रतिलिपि कैसे करें। मुझे पता है कि यह सभी पाठ फ़ाइलों के लिए कैसे करना है , लेकिन मैं चयनित लाइनों के लिए करना चाहता हूं। धन्यवाद!



जवाबों:


105

SHIFTVआपको चुनिंदा लाइनों मोड में रखता है। फिर "*yवर्तमान में चयनित पंक्तियों को *रजिस्टर में जमा करता है जो क्लिपबोर्ड है। कर रहे हैं काफी कुछ अलग रजिस्टर, विभिन्न प्रयोजनों के लिए। विंडोज और लिनक्स के selection and drop registersबीच *और +रजिस्टरों के अंतर के विवरण के लिए अनुभाग देखें ।


10
लिनक्स में, + वैश्विक क्लिपबोर्ड है, * चयन क्लिपबोर्ड है, जबकि विंडोज में दोनों वैश्विक क्लिपबोर्ड पर मैप करते हैं।
मोहनीश

74

यदि आप लिनक्स पर हैं और एक VIm संस्करण 7.3.74 या उच्चतर का उपयोग कर रहे हैं (वह संस्करण जो Ubuntu 11.10 में स्थापित हो जाता है, तो इससे संतुष्ट हो जाता है), आप कर सकते हैं

set clipboard=unnamedplus

जो किसी भी विशेष रजिस्टरों का उपयोग किए बिना, वैश्विक क्लिपबोर्ड में पाठ को जगह देगा, और आपको वैश्विक क्लिपबोर्ड से पेस्ट करने की अनुमति देगा। Ldigas के समाधान के विपरीत, यह VIm के गैर-गीय संस्करणों पर भी काम करेगा।


8
यह केवल तभी काम करता है जब मैं vim-gnomeइसके बजाय पैकेज स्थापित करता हूं vim
डैन-क्लेशॉन

4
@ दान-क्लैसन: इस विकल्प के लिए एक विम की आवश्यकता होती है जिसे क्लिपबोर्ड समर्थन के साथ संकलित किया गया था। आप यह देख सकते हैं कि क्या यह टाइप करके मामला है vim --version | grep "+xterm_clipboard"
16

यह अन्य गैर-विम कार्यक्रमों में कॉपी करने के लिए काम करता है, लेकिन जब मैं विम में डालने मोड में जाता हूं और क्लिपबोर्ड से पेस्ट करने के लिए "शिफ्ट + इंसर्ट" का उपयोग करता हूं, तो केवल पहली दो पंक्तियां चिपकाई जाती हैं ... मैंने विम-ग्नोम स्थापित किया ; क्या मुझे कुछ और याद आ रहा है?
t2k32316

1
यदि आप macOS पर हैं, तो आपको संभवतः clipboard=unnamedइसके बजाय ( vim.wikia.com/wiki/Accessing_the_system_clipboard ) का उपयोग करने की आवश्यकता होगी
streof

13
set guioptions+=a

होगा, ... उह, संक्षेप में, जब भी आप कुछ का चयन / यांक करते हैं तो इसे क्लिपबोर्ड में भी डाल देते हैं (विम के नहीं, बल्कि विंडो सिस्टम का वैश्विक कीबोर्ड)। इस तरह आपको चीजों को एक विशेष रजिस्टर में जमा करने के बारे में सोचने की ज़रूरत नहीं है।


2
//, किस ऑपरेटिंग सिस्टम और / या संस्करणों के Vim से यह सलाह लागू होती है?
नाथन बसानी

10

जीवीआईएम के लिए, vदृश्य मोड में जाने के लिए मारा ; टेक्स्ट का चयन करें और हिट करेंCtrl+Insertवैश्विक क्लिपबोर्ड में चयन को कॉपी करने के का चयन करें।

मेनू से आप देख सकते हैं कि शॉर्टकट कुंजी है "+yयानी Shift कुंजी दबाए रखें, फिर दबाएं ", फिर +Shift और प्रेस जारी करें y(Shift + Insert की तुलना में बोझिल)।


यह उत्तर लोकप्रिय क्यों नहीं है? :(
अंकित शुभम

6

यदि आप मैक 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

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


//, मैंने अभी इसका परीक्षण OSX 10.12.3 पर किया था, और जब मैंने यहाँ सिफारिश की थी, तब मैंने नवीनतम Vim और लैट GUI संस्करण दोनों को स्थापित करने के बाद ठीक से काम किया। धन्यवाद, @ अनाम।
नाथन बसानी

4

यदि आप नहीं "स्थापित करें" xclip ...

sudo apt-get install xclip

Xclip डेटा को "चयन / हाइलाइटेड" क्लिपबोर्ड में डालता है जिसे आप "ctfect +" के विपरीत चिपकाने के लिए मध्य-क्लिक करते हैं

जबकि vim में पूर्व कमांड का उपयोग करें:

7w !xclip

या

1,7w !xclip

या

%w !xclip

तो बस किसी भी अन्य आवेदन में पेस्ट करने के लिए मध्य क्लिक करें ...


4

अगर विम को क्लिपबोर्ड समर्थन के साथ संकलित किया गया है, तो आप "*yअर्थ का उपयोग कर सकते हैं : रजिस्टर में नेत्रहीन चयनित पाठ *('*' क्लिपबोर्ड पर है)

अगर कोई क्लिपबोर्ड समर्थन नहीं है, तो मुझे लगता है कि केवल दूसरे तरीके का उपयोग करना है ताकि Ctrl+Insertनेत्रहीन रूप से पाठ का चयन किया जा सके।


3

मैंने अपने लिए निम्न पंक्ति जोड़ी है .vimrc

vnoremap <F5> "+y<CR>

यह आपको चयनित टेक्स्ट को क्लिपबोर्ड पर दबाकर कॉपी करने की अनुमति देता है F5। यह काम करने के लिए आपको दृश्य मोड में होना चाहिए।


1
~/.vimrcधन्यवाद में जोड़ें , यह बहुत बेहतर है।
दांतेदार

2

निम्नलिखित कोड को अपने में जोड़ें .vimrc:

if has('clipboard')
    if has('unnamedplus')  " When possible use + register for copy-paste
        set clipboard=unnamed,unnamedplus
    else         " On mac and Windows, use * register for copy-paste
        set clipboard=unnamed
    endif
endif
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.