Vi एडिटर में पेस्ट कंटेंट को कॉपी कैसे करें


165

मैंने vi संपादक दस्तावेज़ में सामग्री चिपकाने के लिए Ctrl+ का उपयोग करने की कोशिश की V, लेकिन Ctrl+ Vको एक पेस्ट के रूप में व्याख्या नहीं की गई है।


16
बस एक नोट, वीआई का उपयोग करने का मुख्य कारण है क्योंकि विम स्थापित नहीं है। यदि आपने विम को स्थापित किया है, तो संभवतः इसके बजाय इसका उपयोग करने लायक है। वास्तव में वीए के लिए एक फायदा नहीं है इसके अलावा यह पहले से ही हर यूनिक्स स्थापित पर मौजूद है। मेरी राय में विम सीखने का सबसे अच्छा तरीका अपने टर्मिनल एमुलेटर को खोलना है (विम के भीतर से नहीं) और टाइप करें vimtutorयह आपको लगभग 45 मिनट में आपके लिए उपयोग करने के लिए गति के लिए मिलेगा।
बेन मोर्दकै

1
+1 @BenMordecai - मैं पहले से ही vi (पुराने से) से परिचित था, जिसमें इसकी सुविधाजनक उप-खोल क्षमता भी शामिल थी, लेकिन इसे ताज़ा करने की आवश्यकता थी। ट्यूशन का बहुत छोटा सा। एक हवा की तरह इसके माध्यम से चला गया। धन्यवाद।
Cbhihe

जवाबों:


192

पहले, सुनिश्चित करें कि आप संपादन मोड (प्रेस i) में हैं। तब आप Ctrl+ Shift+ के साथ पेस्ट कर सकते हैं V, यदि आप टर्मिनल एमुलेटर में हैं gnome-terminal(या राइट-क्लिक मेनू से "पेस्ट" चुनें)।

:set pasteस्वचालित इंडेंटिंग, आदि को अक्षम करने के लिए पेस्ट करने से पहले आप vim में भी टाइप कर सकते हैं :set nopaste

यह भी जांच इस सवाल का अधिक जानकारी के लिए पर stackoverflow.com।

यदि आप vim(क्लिपबोर्ड सामग्री को चिपकाने के विपरीत) लाइनों को कॉपी / पेस्ट करना चाहते हैं, तो आप yank कमांड को देखना चाहेंगे । यहाँ एक धोखा पत्रक है जो मदद कर सकता है।


1
मुझे लगता है कि अगर आपके पास माउस कर्सर है, तो आप Ctrl + Shift + V का उपयोग करके पेस्ट नहीं कर सकते।
एल्विन वोंग

14
सिर्फ एक नोट, Iकेस-संवेदी है। लोअरकेस iडालने मोड में प्रवेश करने का सामान्य तरीका है। कैपिटल Iलाइन की शुरुआत में कर्सर लाता है और फिर आपको इन्सर्ट मोड में प्रवेश करता है।
बेन मोर्दकै

64

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

हालांकि, आप सवाल का जवाब देने के लिए। सिस्टम क्लिपबोर्ड की सामग्री को प्लस रजिस्टर के माध्यम से एक्सेस किया जा सकता है। तो आप सामान्य क्लिप से सिस्टम क्लिपबोर्ड से कुछ पेस्ट करने के लिए दबा सकते हैं: "+p(एक ही समय में, लेकिन एक के बाद एक)।


3
यह कुछ ऐसा है जो मैं अब तक नहीं जानता था। इसके अलावा, अभी तक एक और भयानक विम ट्यूटोरियल जोड़ने के लिए +1।
अत्तिला ओ।

19
संपादकों के लिए लर्निंग कर्व्स की बात करें तो, "कुछ सामान्य संपादकों के लिए शास्त्रीय लर्निंग कर्व्स हैं", blog.thilelli.net/public/store/attached/curves.jpg
होवडाल

GNOME टर्मिनल में, कॉपी और पेस्ट के लिए शॉर्ट-कट क्रमशः Ctrl-Shift-C और Ctrl-Shift-V हैं।
फ्लिम

1
मैंने बदले में दबाने की कोशिश की है <kbd> "</ kbd>, <kbd> + </ kbd> और <kbd> p </ kbd>, <kbd>" </ kbd> और <kbd> p < / kbd> और कुछ भी नहीं हुआ है। मैंने क्या गलत किया है? मैं प्रयोग viनहीं करताvim
user907860

1
यही सही जवाब है। उदाहरण के लिए उपयोग करना। Ctrl-Shift-v केवल सरलतम सामग्री (लाइन ब्रेक और इंडेंटेशन के साथ काम करेगा, यदि आप टर्मिनल में हैं, तो आप वास्तव में गलत हो सकते हैं और आप उपयोग करना भूल गए हैं set :paste)।
रासना

29
  1. यदि आप एक ही फ़ाइल के भीतर पेस्ट सामग्री को कॉपी करना चाहते हैं , तो उपयोग करें yankऔर paste

  2. यदि आप टर्मिनलों पर पेस्ट सामग्री को कॉपी करना चाहते हैं, तो पहली फ़ाइल खोलें, जो टेक्स्ट आपको चाहिए, उसे yanking करें, फिर अपनी दूसरी फ़ाइल vim (उदा :tabnew /path/to/second/file) के भीतर खोलें और pइसे पेस्ट करने के लिए दबाएं ।

  3. यदि आप किसी बाहरी प्रोग्राम से पेस्ट सामग्री को कॉपी करना चाहते हैं , तो आपको सिस्टम क्लिपबोर्ड तक पहुंचने की आवश्यकता है। मुझे लगता है कि आप उबंटू का उपयोग करते हैं। विम के GUI संस्करण में हमेशा क्लिपबोर्ड समर्थन होता है, हालांकि, यदि आप किसी टर्मिनल से विम का उपयोग करना पसंद करते हैं, तो आपको X11-क्लिपबोर्ड समर्थन की जांच करनी होगी।

    कंसोल से टाइप करें:

    $ vim --version | grep xterm
    

    यदि आपको -xterm_clipboard मिलता है , तो आपके पास दो विकल्प हैं:

    1) अपने आप को संकलित करें, xterm_clipboard ध्वज पर

    2) इसके बजाय विम को अनइंस्टॉल करें, gvim (vim-gtk या vim-gnome) स्थापित करें । आप टर्मिनल से विम को कॉल करके नॉन-गिम विम से चिपके रह सकते हैं, उसी तरह जो आपने पहले किया था। इस बार जब आप जांचते हैं तो आपको + xterm_clipborad ढूंढना चाहिए ।

    अब, जब आप अपने vim एडिटर के अंदर + रजिस्टर में कुछ टेक्स्ट यैंक करते हैं (जैसे "+ yy), तो यह सिस्टम क्लिपबोर्ड पर भी कॉपी हो जाता है जिसे आप gedit एडिटर की तरह अपने बाहरी प्रोग्राम से प्राप्त कर सकते हैं Ctrl+ का उपयोग करके V

  4. यदि आप किसी बाह्य प्रोग्राम से पेस्ट सामग्री को vim में कॉपी करना चाहते हैं , तो पहले अपने टेक्स्ट को सिस्टम क्लिपबोर्ड में Ctrl+ के माध्यम से कॉपी करें C, फिर vim एडिटर इंसर्ट मोड में , माउस मध्य बटन (आमतौर पर पहिया) पर क्लिक करें या पेस्ट करने के लिए Ctrl+ Shift+ दबाएं V

    ये विम से संबंधित 4 मूल कॉपी और पेस्ट स्थितियां हैं। आशा है कि ये आपकी मदद करेगा।


क्या बात है: tabnew / path / to / second / file? आप पहली फ़ाइल में yanking / copy / cut करना, उसी के साथ दूसरी फ़ाइल खोलना: vi / path / to / second / file और इसमें पेस्ट (p / P) कर सटीक सटीक चीज़ प्राप्त कर सकते हैं। कम से कम मेरे मामले में ... या ऐसा इसलिए है क्योंकि मेरे पास + xterm_clipboard vim सुविधा सक्षम है? या वहाँ है कि अधिक से अधिक सारणी है?
Cbhihe

1
उबंटू vim-gtkमें xterm_clipboardसमर्थन है और फेडोरा xvimपर है।
icc97

18

मैं हमेशा Shift+ का उपयोग करता Insertहूं, जब मैं पाठ को टर्मिनल में चिपकाना चाहता हूं, सभी टर्मिनल कार्यक्रमों में काम करता है।

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


2
Vi/ Vim! = टर्मिनल;)
0xC0000022L

1
ठीक है, लेकिन यह अभी भी काम करता है :)
मैग्नस जोंसन

इसके लिए +1 .. आप कहने Ctrl+Aके लिए Ctrl+Cभी क्या उपयोग करते हैं ?
अरूप रक्षित

अगर मैं DE के अंदर एक टर्मिनल का उपयोग करता हूं तो मैं आमतौर पर माउस के साथ पाठ का चयन करता हूं और Ctrl + Shift + C के साथ कॉपी करता हूं।
मैग्नस जोंसन

शिफ्ट + इन्सर्ट gvim में भी काम करता है। (मैं उबंटू 13.10 पर चल रहा हूं, अगर इससे कोई फर्क पड़ता है।)
eksortso

10

आपने कहीं और हाइलाइट किया हुआ पाठ सम्मिलित करने के लिए माउस के केंद्र बटन का उपयोग करें ।

यह तब उपयोगी होता है जब आपके पास अपने सिस्टम क्लिपबोर्ड तक पहुँच नहीं होती है (उदाहरण के लिए, दूरस्थ SSH सत्र में)।

विम के लिए संपादन / सम्मिलित मोड में होना चाहिए।


6

एक बार vi दर्ज iकरने के बाद, इन्सर्ट मोड में जाने के लिए दबाएँ , टर्मिनल में राइट क्लिक करें, पेस्ट पर क्लिक करें।


मुझे लगा कि लोअर-केस है i। ऊपरी मामला क्या करता Iहै?
फ्लिम

@ फाल्म जो पहले से ही बेन मोर्दकै की एक टिप्पणी पर एक और जवाब में समझाया गया था।
सियारसद्देटंडिल

मैंने उत्तर को लोअर-केस होने के लिए संपादित किया है i। अपर-केस Iकर्सर को इन्सर्ट मोड में प्रवेश करने से पहले लाइन की शुरुआत में ले जाता है, जिसकी यहाँ आवश्यकता नहीं है।
फ्लिम

5

Vi का उपयोग करके yankऔर में पाठ की पंक्तियों को कॉपी / पेस्ट करने के लिए विस्तृत निर्देशput

( vi के कमांड मोड में निम्नलिखित का उपयोग करें )

कॉपी (YANK)

Vi में एक पंक्ति की प्रतिलिपि बनाने के लिए:

  • कमांड मोड में, कर्सर को उस लाइन पर ले जाएं, जिसे कॉपी करने की आवश्यकता है और टाइप yyया टाइप करेंY

Vi में 2 लाइनें कॉपी करने के लिए:

  • कमांड मोड में, कर्सर को पहली पंक्ति में ले जाएं जिसे कॉपी करने की आवश्यकता है और टाइप 2yyया टाइप करें2Y

(इसी तरह, कितनी भी लाइनें कॉपी की जा सकती हैं)

वर्तमान स्थान से फ़ाइल के अंत तक सभी पंक्तियों को कॉपी करने के लिए:

  • कमांड मोड में, कर्सर को पहली पंक्ति में ले जाएं, जिसे कॉपी करना होगा और टाइप करना होगा yG

वर्तमान स्थान से वर्तमान शब्द के अंत तक सभी पाठ कॉपी करने के लिए:

  • कमांड मोड में, कर्सर को उस स्थान पर ले जाएँ जहाँ से पाठ को कॉपी करने की आवश्यकता है और टाइप करें yw

वर्तमान स्थान से पंक्ति के अंत तक सभी पाठ कॉपी करने के लिए:

  • कमांड मोड में, कर्सर को उस स्थान पर ले जाएँ जहाँ से पाठ को कॉपी करने की आवश्यकता है और टाइप करें y$

पेस्ट (PUT)

क्लिपबोर्ड में पाठ चिपकाने के लिए - कर्सर के स्थान के बाद :

  • कमांड मोड में, टाइप करें p

क्लिपबोर्ड में टेक्स्ट पेस्ट करने के लिए - कर्सर के स्थान से पहले :

  • कमांड मोड में, टाइप करें P

1

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

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 का उपयोग करके कॉपी और पेस्ट करने में सक्षम हूं।


इससे मेरी समस्या ठीक हो गई!
astrojuanlu

1

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

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

अब आपको +clipboardया +xterm_clipboardवीम फीचर्स की जरूरत नहीं है। इस सुविधा को "ब्रैकेटेड पेस्ट" कहा जाता है। अधिक जानकारी के लिए, https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56786463 देखें


यही जवाब मैं ढूंढ रहा हूं। चूंकि विष्णु ग्नू / लाइनक्स डिस्ट्रोस पर डिफ़ॉल्ट नहीं है, इसलिए इसे ubuntu में भी स्थापित करने की आवश्यकता है। इसके अतिरिक्त, Vi के ऊपर नीचे बटन ubuntu और कोई हाइलाइट पर काम नहीं करता है।
इसका नोटोमाईलनामाइन


0

मैं बस यह नोट करना चाहता था कि विंडोज पर जीआईटी बैश के माध्यम से विम का उपयोग करके, आप pसम्मिलित मोड में बिना माउस के बस -क्लिक या उपयोग कर सकते हैं । के माध्यम से विम का उपयोग पुट्टी पर आप बिल्कुल सही क्लिक कर सकते हैं। और हाइलाइटिंग कॉपी करता है।

मैंने इसे नोट किया है क्योंकि मुझे यह देखकर नहीं मिला कि यह उबंटू के लिए एसई है।

अन्य सहायक आदेश:

  • yy(# लाइनों के) - यान (कॉपी)
  • dd(# लाइनों के) - हटाएं
  • p - करंट लाइन के नीचे पेस्ट लाइन
  • Shift+ p- वर्तमान लाइन के ऊपर पेस्ट लाइन
  • u - पूर्ववत करें
  • r - फिर से करें
  • i - इन्सर्ट मोड
  • v - दृश्य मोड

यह मेरे लिए विंडोज गिट बैश पर काम नहीं किया। आप किस कंसोल का उपयोग कर रहे हैं, मिनिटेट या विंडोज़ सीएमडी?
बुद्धिमानबीज

मेरा मानना ​​है कि यह मिनिटेट था।
टायलर क्रिश्चियन

0

आप इस्तेमाल कर सकते हैं Ctrl+ Shift+ Vटर्मिनल संस्करण vim में पेस्ट करने के लिए, लेकिन जीयूआई संस्करण vim के लिए की तरह Neovim-Qt, सिस्टम क्लिपबोर्ड से चिपकाने पाठ के साथ Ctrl+ Shift+ Vबस काम नहीं करेगा। आपको क्लिपबोर्ड "+या "*विम एडिटर तक पहुंचना होगा ।

नई कीबाइंडिंग .vimrcको बस कॉपी / पेस्ट कमांड्स में जोड़ना :

" paste from system clipboard, align indentation with surroundings
noremap <Leader>p "*]p:set nopaste<CR>
" copy a sentence into system clipboard
noremap <Leader>y "+y)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.