इन्सर्ट मोड में पेस्ट करें?


जवाबों:


465

जबकि इन्सर्ट मोड हिट में CTRL-R {register}

उदाहरण:

  • CTRL-R * क्लिपबोर्ड की सामग्री में सम्मिलित करेगा
  • CTRL-R " (अनाम रजिस्टर) अंतिम डिलीट या यैंक सम्मिलित करता है।

विम के सहायता प्रकार में इसे खोजने के लिए :h i_ctrl-r


13
हां, मैंने हाल ही में CTRL-R सीखा है और यह बेहद उपयोगी है।
दान

16
CTRL-R *केवल जीवीआईएम या संस्करणों में काम करता है जिन्हें एक्स के साथ बातचीत करने के लिए संकलित किया जाता है। टाइप करें vim --versionऔर देखें +xterm_clipboard। यदि आपके पास ऐसा नहीं है, तो आपको विम के अलग संस्करण की आवश्यकता है। ( vim.wikia.com/wiki/Accessing_the_system_clipboard )
कॉनरोड।

10
आपको वास्तव में केवल जरूरत है +clipboard, लेकिन अगर आपके पास +xterm_clipboardआपके पास वैसे भी होना चाहिए। कुछ OS पर xterm_clipboardलागू नहीं है।
एंड्रयू मार्शल

1
हम्म, मैं विंडोज पर सिस्टम क्लिपबोर्ड से पेस्ट करने के लिए सी-आर + का उपयोग करता हूं (जीवीएम पोर्टेबल का उपयोग करके)? कभी नहीं सुना * रजिस्टर।
kitsu.eb

6
@ kitsu.eb ऑन एक्स सिस्टम *रजिस्टर, मध्य-माउस-क्लिक के साथ पारंगत +है, जबकि पारंपरिक कॉपी / पेस्ट है। मानकों.
freedesktop.org/clipboards-spec/clipboards-latest.txt

235

यदि आप नहीं चाहते हैं कि आने वाले पेस्ट किए गए पाठ में फ़ॉर्मेटिंग को कम करने के लिए विम का उपयोग किया जाए, तो आप इसका उपयोग करने पर भी विचार कर सकते हैं :set paste:। यह आपके कोड को फिर से टैब करने से विम को रोक देगा। जब पेस्ट किया जाता है, :set nopasteतो सामान्य व्यवहार पर वापस आ जाएगा।

set pastetoggle=<F2>अपने .vimrc जैसा कुछ जोड़कर मोड को एक एकल कुंजी के साथ टॉगल करना भी संभव है । ऑटो-इंडेंट पर टॉगल करने के बारे में अधिक जानकारी यहाँ हैं


47
:set nopasteपेस्ट मोड को निष्क्रिय कर देगा
जेम्स स्नाइडर

24
@JamesSnyder एक बेहतर तरीका :set paste!संभवत: सेट है पेस्ट आपके कमांड इतिहास में बहुत करीब है, इसलिए आप बस 'दबा सकते हैं': ', फिर तीर-अप और एक'! 'जोड़ें।
राफेल बारबोसा

6
बस जिज्ञासु - :set paste! धन्यवाद के बारे में क्या बेहतर या अलग है :)
माइकल ड्यूरेंट

33
!में आदेश के अंत में vimटॉगल चालू और बंद आदेश। इस तरह से आपको टाइप :set nopasteकरने की बजाय अपने इतिहास को स्क्रॉल करने और उसी कमांड ( :set paste!) को फिर से चलाने की जरूरत नहीं है ।
에이

3
@blockloop आपको चिपकाने के दौरान इसे सक्षम करना है और इसे बाद में अक्षम करना है।
11

125

सीधे तौर पर नहीं। यद्यपि आप एक सामान्य मोड ऑपरेशन के लिए जल्दी से सम्मिलित मोड से बाहर निकल सकते हैं, लेकिन Ctrl-Oफिर वहां से पेस्ट करें जो आपको डालने के मोड में वापस डाल देगा।

मुख्य कॉम्बो: Ctrl-O p

संपादित करें: दिलचस्प। ऐसा प्रतीत होता है कि एक तरीका है जैसा कि कई अन्य लोगों ने सूचीबद्ध किया है।


2
ctrl-r "मेरे लिए काम नहीं करता है (ओएस एक्स, एक टर्मिनल में vi)। ctrl-o p किया।
बॉब

4
यह याद रखने का सबसे तेज़ और आसान तरीका है।
pinpox

किस बारे में esc + p?
सिटिलाज

2
निश्चित रूप से तेजी से esc + p + iऔर निश्चित रूप से टाइप करने में आसान हैCTRL-R + "
lucidbrot

दरअसल, यह कभी-कभी अलग व्यवहार करता है CTRL-R "। उदाहरण के लिए, हालांकि vimrc सेटिंग्स इसे बदल सकती हैं, किसी नई लाइन में किसी चीज को चिपकाने CTRL-O pसे उसका इंडेंटेशन चला जाता है।
कोई नाम नहीं

30

इन्सर्ट मोड में, आप उपयोग कर सकते हैं Ctrl-R {register}, जहाँ रजिस्टर हो सकता है:

  • + क्लिपबोर्ड के लिए,
  • * X क्लिपबोर्ड के लिए (X में अंतिम चयनित पाठ),
  • " अनाम रजिस्टर के लिए (विम में अंतिम डिलीट या यान),
  • या दूसरों के एक नंबर (देखें :h registers)।

Ctrl-R {register} पाठ को सम्मिलित करता है जैसे कि यह टाइप किया गया था।

Ctrl-R Ctrl-O {register} मूल इंडेंटेशन के साथ पाठ सम्मिलित करता है।

Ctrl-R Ctrl-P {register} पाठ सम्मिलित करता है और ऑटो-इंडेंट करता है।

Ctrl-Oइंसर्ट मोड में लौटने से पहले किसी भी सामान्य मोड कमांड को चलाने के लिए इस्तेमाल किया जा सकता है, इसलिए
Ctrl-O "+pइसका भी उपयोग किया जा सकता है, उदाहरण के लिए।

अधिक जानकारी के लिए, के साथ प्रलेखन देखें :h i_ctrl-r


4
यह उत्तर सबसे व्यापक प्रतीत होता है। यह बहुत स्पष्ट है, और मेरी राय में, सबसे अधिक उपयोगी है। यह ओपी के प्रश्न का उत्तर देता है और फिर कुछ, संक्षिप्त रूप से।
देवविन

26

आप इसका उपयोग क्लिपबोर्ड से चिपकाने के लिए कर सकते हैं Ctrlv:

set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>

और इसके साथ क्लिपबोर्ड में दृश्य चयन को yanking के लिए Ctrlc:

vnoremap <C-c> "+y

यदि आप सामान्य मोड में क्लासिक विम यैंकिंग / पेस्टिंग ( y/ p) के लिए डिफ़ॉल्ट रूप से क्लिपबोर्ड का उपयोग करना चाहते हैं , तो यहां एक कॉन्फ़िगर विकल्प है जो इसे करता है:

set clipboard=unnamedplus

इस कॉन्फ़िगरेशन के साथ आप सामान्य मोड में पहले yank कर सकते हैं और फिर Ctrlvइन्सर्ट मोड में पेस्ट कर सकते हैं । इसके अलावा, आप विभिन्न विम इंस्टेंस और अलग-अलग एप्लिकेशन से टेक्स्ट पेस्ट कर सकते हैं।

एक अन्य विकल्प है:

set clipboard=unnamed

तब आप अपने X वातावरण में माउस घसीट कर बस कुछ चुन पाएंगे और बाद में इसे पेस्ट कर सकते हैं। लेकिन (किसी कारण से) आप yविम ( और) में कुछ नहीं कर पाएंगेshiftinsert और उसके बाद कहीं और , जो संभवतः काफी सीमित है।

विम डॉक्स इसके बारे में: http://vim.wikia.com/wiki/Accessing_the_system_clipboard

कस्टम रजिस्टरों से चिपकाने के लिए आप अन्य उत्तरों का अनुसरण कर सकते हैं :)। यह उत्तर मुख्य रूप से आपके सिस्टम क्लिपबोर्ड के साथ विम को एकीकृत करने के बारे में है।


ध्यान दें कि set clipboard=unnamedplusऔर set clipboard=unnamedकाम करने के लिए, आपको gvim या vimx ( vim-X11) का उपयोग करने की आवश्यकता है : जिनका संकलन किया गया है +xterm_clipboard। आप वैकल्पिक रूप से अपने में डाल सकते हैं .bashrcउर्फ करने के vimसाथ vimx:

if [ -e /usr/bin/vimx ]; then
    alias vim='/usr/bin/vimx'; # vim with +xterm_clipboard
fi

आप यह जान सकते हैं कि आपके विम को +xterm_clipboardदी गई जानकारी में जानकारी है या नहीं vim --version


7
यही वह है जिसकी तलाश में मैं हूं। यह यहां का एकमात्र उचित जवाब भी है। यह इस तरह से काम करने की उम्मीद करता है। क्या किसी को पता है कि क्यों :set pasteऔर बायज़ेंटाइन <leader><leader> * yका डिफ़ॉल्ट व्यवहार दूरस्थ रूप से वांछनीय है? ध्वनि के लिए प्रतिबद्ध नहीं, मैं वास्तव में उत्सुक हूं कि यह किस दर्शन को दर्शाता है, या यदि यह सिर्फ एक ऐतिहासिक दुर्भाग्य है।
ऐशेक्लस

आपके उत्तर से मुझे Gvim में Shift + Insert का उपयोग करने की अनुमति मिली inoremap <S-Insert> <F12><C-r>+<F12>(मैं पास्टॉग्लॉग के रूप में F12 का उपयोग करता हूं)। धन्यवाद।
सरोमो

20

यदि आप सिस्टम क्लिपबोर्ड ( :set clipboard=unnamed) का उपयोग करने के लिए विम सेट करते हैं , तो विम में कॉपी किए गए किसी भी पाठ को Shift+ का उपयोग करके चिपकाया जा सकता है InsertShift+ Insertबस एक ओएस-वाइड पेस्ट कुंजी-संयोजन है ( Ctrl+ Insertइसी 'कॉपी' है)।


1
S- इन्सर्ट के बारे में नहीं जानते थे :)
BandGap

क्या यह उल्टा काम करता है? pक्लिपबोर्ड में टेक्स्ट पेस्ट करेंगे ?
ज़ाज़

Shift + Insertपाठ को चिपकाने के लिए उपयोग करने से पहले , हमें सम्मिलित मोड में होना चाहिए।
jdhao

18

आप माउस मिड बटन का उपयोग इन्सर्ट मोड (केवल लिनक्स) में पेस्ट करने के लिए भी कर सकते हैं।


106
आप किस चूहे की बात कर रहे हैं?
जिम मिचनर

19
ये नॉन-लाइनक्स ओएस आप किस बारे में बात करते हैं?
ब्रूनो ब्रोंस्की

-1: यह उत्तर हार्डवेयर और टर्मिनल सेटिंग्स पर अत्यधिक निर्भर है। अंत में, माउस पर बटन टर्मिनल के लिए एक प्रीसेट स्ट्रिंग्स भेजता है, और टर्मिनल एक निश्चित कमांड को निष्पादित करने के लिए उस स्ट्रिंग को पार्स करता है। समस्या यह है, यह टर्मिनल सेटिंग्स के आधार पर बहुत भिन्न हो सकता है। इस उत्तर को बेहतर बनाने के लिए, कृपया हमें, कम से कम, टर्मिनल का संस्करण, OS, और आपके द्वारा उपयोग किए जा रहे माउस का संस्करण और मॉडल प्रदान करें।
मेल्विनकिम

मध्य माउस बटन पेस्ट सभी लिनक्स अनुप्रयोगों में बहुत आम है, जो टर्मिनल या ओएस संस्करणों द्वारा सीमित नहीं है।
lcltj

आर्क लिनक्स + urxvt में काम नहीं करता है। यह केवल नई लाइन जोड़ता है।
जिग्मेंटस

5

आप के -- INSERT (past) --माध्यम से मोड में प्रवेश कर सकते हैं :

  • कीबोर्ड कॉम्बो: y p

या

  • :set pasteऔर डालने मोड ( :set nopasteनिष्क्रिय करने के लिए)

एक बार -- INSERT (past) --मोड में बस अपने सिस्टम पेस्ट फ़ंक्शन का उपयोग करें (जैसे CtrlShiftvलिनक्स पर,Cmdv पर मैक ओएस पर)।

यह रणनीति बहुत उपयोगी है जब ssh पर विम का उपयोग करें।


4

हाँ। विंडोज Ctrl+ मेंV और लिनक्स में दोनों माउस बटन को लगभग एक साथ दबाते हैं।

विंडोज में मुझे लगता है कि मेरे _vimrc में यह लाइन शायद यही करती है:

source $VIMRUNTIME/mswin.vim

लिनक्स में मुझे याद नहीं है कि मैंने यह कैसे किया। ऐसा लगता है कि मैंने शायद डिफ़ॉल्ट .vimrc फ़ाइल से कुछ लाइन हटा दी है।


क्या मैं एक से अधिक बार उत्थान कर सकता हूँ ?? मैं केवल तब पेस्ट करना चाहता हूं जब मैं दूसरी खिड़की से आया हूं - इसलिए मैं हमेशा माउस पर हूं। प्रतिभाशाली!
डेव

लिनक्स में आप मध्य माउस बटन दबाकर पेस्ट करते हैं। यदि आपके पास दो बटन माउस हैं और बाएँ और दाएँ दोनों बटन दबाते हैं, तो इसे इस तरह से काम करने के लिए "Emulate3Buttons" या समान की आवश्यकता है।
कौगर

0

इन्सर्ट मोड में पेस्ट करें

इस मामले में एक कस्टम मानचित्र उचित लगता है। यह है कि मैं डालने मोड में yanked आइटम पेस्ट करने के लिए उपयोग करें:

inoremap <Leader>p <ESC>pa

Leaderयहाँ मेरी कुंजी है \; इसका मतलब यह है कि \pइंसर्ट मोड में मारने से पहले से तैयार की गई वस्तुएं / रेखाएं चिपक जाएंगी।


0

बस मानचित्र जोड़ें:

" ~/.vimrc
inoremap <c-p> <c-r>*

विम को पुनरारंभ करें और जब Crtl+pइन्सर्ट मोड में प्रेस करें तो कॉपी किया हुआ टेक्स्ट पेस्ट किया जाएगा

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