सभी पंक्तियों को क्लिपबोर्ड पर कॉपी करें


564

क्या VI संपादक में खुली फाइल से क्लिपबोर्ड तक सभी लाइनों को कॉपी करने का कोई तरीका है। मैंने कोशिश कीyG लेकिन यह क्लिपबोर्ड का उपयोग करके उन पंक्तियों के स्टोर करने के लिए नहीं है।

तो क्या यह संभव है?



1
यदि आप विंडोज पर हैं और यांक काम नहीं करता है, तो ऊपर से 17 वां उत्तर देखें: stackoverflow.com/questions/1620018/…
Noumenon

जवाबों:


635

आपको पाठ को *या + रजिस्टरों को छोड़ देना चाहिए :

gg"*yG

स्पष्टीकरण:

  • gg फ़ाइल के पहले वर्ण में कर्सर लाने के लिए
  • "*y*पहली पंक्ति से रजिस्टर करने के लिए एक yank कमांड शुरू करने के लिए , जब तक ...
  • G फ़ाइल के अंत में जाने के लिए

6
आप पाठ को कैसे चिह्नित करते हैं ताकि यह कुंजियों की तरह दिखे? मैंने अभी तक एसओ पर नहीं देखा है।
jergason

10
हैलो ... अपने काम नहीं कर रहा? क्लिपबोर्ड डेटा अनछुए बनी हुई है। पहली पंक्ति को जाता है जब मैं gg कर्सर टाइप ... लेकिन जब मैं टाइप "* वायजी ..cpu बीप * ..so यह सामान्य या मेरे vim में कुछ समस्या है पर मैं Ubuntu पर कर रहा हूँ ..?
Xinus

1
क्या आपके पास डेडकीस सक्षम है? (उदाहरण के लिए, जब आप हिट 'एक तुम एक मिल) हां, तो आप के बाद प्रेस अंतरिक्ष के लिए की जरूरत है "
Tordek

144
अगर यह xterm_clipboard सक्षम है के साथ संकलित है, तो विम केवल सिस्टम क्लिपबोर्ड तक पहुंच सकता है। पता लगाने के लिए आप इस सुविधा, समाप्त हो गया है कि क्या :versionvim में, और के लिए देखो +xterm_clipboardझंडा। यदि यह एक ऋण चिह्न द्वारा पूर्ववर्ती है, तो आपके पास यह कार्यक्षमता नहीं होगी। यदि यह स्थिति है, तो आप अपने आप को vim संकलित करना चाहते हैं, या gvim चला सकते हैं, जिसमें आमतौर पर यह सुविधा सक्षम होती है।
नेलस्ट्रॉम

9
इस दृष्टिकोण के साथ समस्या यह है कि यह कर्सर को स्थानांतरित करता है और खिड़की को चारों ओर स्क्रॉल करता है। दो बार। अन्य जवाब अब तक कम कीस्ट्रोक्स है और कमियां :)
sehe

696

उपयोग:

:%y+

सभी लाइनों के लिए।

स्पष्टीकरण:

  • % सभी लाइनों पर काम करने के लिए अगले आदेश उल्लेख करने के लिए
  • y उन लाइनों के लिए
  • + सिस्टम क्लिपबोर्ड पर कॉपी करने के लिए

एनबी : विंडोज में, +और *बराबर हैं इस जवाब को देखें


19
इसके अलावा यह कर्सर स्थान नहीं बदलेगा।
nperson325681

1
@ गुंजन: ये रजिस्टर vi में मौजूद नहीं हैं; केवल विम में। :helpयह सुनिश्चित करने के लिए टाइप करें कि आप वास्तव में व्यर्थ हैं।
कॉन्सिफिक कम्पाइलर

6
मुझे जरूरत थी set clipboard=unnamed, लेकिन फिर इसने बहुत काम किया!
cdunn2001

234
विम कहता है E850: Invalid register name:(
lony

23
यह समाधान केवल तभी काम करता है जब vim को क्लिपबोर्ड विकल्प के साथ संकलित किया गया था (vim --version उस स्थिति में + क्लिपबोर्ड दिखाएगा)। यदि यह नहीं था, तो ब्रायन का समाधान (:% w! Pbcopy) मैक का समाधान है। अन्य ऑपरेटिंग सिस्टम (जैसे xclip) के लिए विकल्प उपलब्ध हैं।
याकूब

90

मैक पर

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

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

  • क्लिपबोर्ड से अतीत :r !pbpaste


6
आसानी से काम करता है। आदेशों का स्पष्टीकरण वास्तव में अच्छा होगा।
व्लाद मैनुअल मूरैन

5
@ Geo pbcopyएक मैक यूटिलिटी है। लिनक्स पर, xselइसके बजाय, या clipविंडोज पर काम कर सकते हैं ।
डेविड लॉर्ड

1
यदि फ़ाइल आपके टर्मिनल की ऊंचाई से अधिक है तो यह काम नहीं करेगा।
श्रीधर सरनोबत

1
@SridharSarnobat :%w !pbcopyअभी भी काम करता है यदि फ़ाइल टर्मिनल की ऊंचाई से अधिक लंबी है।
एड्रियन श्मिट

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

56

क्लिपबोर्ड बफर है +। क्लिपबोर्ड पर कॉपी करने के लिए, करें"+y [और आंदोलन] करें।

इसलिए, gg"+yG पूरी फाइल कॉपी कर लेंगे।

इसी तरह, क्लिपबोर्ड से चिपकाने के लिए, "+p


4
बस इसे जोड़ने के लिए (4 साल बाद ...), इसमें थोड़ी सी खामी है कि आपकी कर्सर स्थिति फ़ाइल के शीर्ष पर कूद जाएगी। इससे बचने के लिए (जैसे अगर आप अपने vimrc में कुछ शॉर्टकट के लिए इसे मैप कर रहे हैं), तो आप कुछ ऐसा कर सकते हैं: mqgg "+ yG`q
टॉम लॉर्ड

45

पूरी फाइल को कॉपी करने का एक और आसान तरीका अगर आपको VI का उपयोग करने में समस्या हो रही है, तो बस "कैट फाइलनेम" लिखकर। यह स्क्रीन करने के लिए फ़ाइल गूंज जाएगा और फिर आप बस ऊपर स्क्रॉल कर सकते हैं और नीचे और कॉपी / पेस्ट।


1
E603:: बिना पकड़: कोशिश
पॉल क्रिस जोन्स

2
और अगर आप ऐसा करने के लिए vim से बाहर निकले बिना चाहते हैं, आप निम्न आदेश चला सकते हैं: :!cat %। और मैक ओएस पर क्लिपबोर्ड पर प्रोग्राम की फ़ाइल को कॉपी करने के लिए::!cat % | pbcopy
TanguyP

जीसीपी में विंडोज पर उबंटू वीएम से डेबियन में फाइल कॉपी करने की जरूरत है, जीसीपी ब्राउजर विंडो में खोली ...: / vim yanking के वेरिएशन से काम नहीं चला, इसने विंडोज को पेस्ट करने के लिए फिर जीसीपी में फाइल अपलोड करने का काम किया।
22

31

यह वही है जो मैं पूरी फाइल को करना चाहता हूं:

ggVGy

12
मुझे डर है कि यह सवाल का जवाब नहीं देता है, क्योंकि आप डिफ़ॉल्ट रजिस्टर पर जा रहे हैं, क्लिपबोर्ड पर नहीं।
कॉन्सपिसीस कंपाइलर

2
@ConspicuousCompiler यदि वह हां clipboardमें लिखे पाठ को कॉपी करने के लिए सेट होता तो यह होता +
टैंकरस्मैश

@TankorSmash तेज (:% y) और न ही सबसे साफ (कम से कम ggyG बेहतर है) विधि हालांकि नहीं है।
पेड्रोपरो सेप

@ConspicuousCompiler डिफ़ॉल्ट रजिस्टर और क्लिपबोर्ड के बीच अंतर क्या है ?
निलोन

17

आप "बिल्ली" कमांड का उपयोग फ़ाइल खोलने और कॉपी करने के लिए माउस का उपयोग कर सकते हैं


5
लेकिन यह "vi" तरीका नहीं है, अगर फ़ाइल बहुत बड़ी है, तो यह भी एक समस्या होगी ... यह काम कर सकता है, लेकिन एक सुझाया हुआ तरीका नहीं ...
आदित्य

1
resetपहले से टर्मिनल, फिर सभी का चयन करें और कॉपी करें। यह sshसत्र के माध्यम से काम करता है ।
arcol

अगर xterm_clipboard अनुपलब्ध है, तो विभिन्न दूरस्थ सर्वरों में बड़ी फ़ाइलों (10 हजार लाइनों के नीचे) के लिए सबसे तेज़ तरीका
Matias Haeussler

10

(@rshdev के जवाब में, और ओपी पर टिप्पणियों में प्रति @ लाइनस्ट्रॉम के साथ + xterm_clipboard के साथ घूमने से बचने के लिए)

एक प्रोग्राम है जिसे xclip कहा जाता है जो Ubuntu 11 पर पुट्ठे की तरह काम करता है:

:%!xclip -sel clip
u

यह डिफ़ॉल्ट रूप से स्थापित नहीं है। स्थापित करने के लिए, उपयोग करें:

sudo apt-get install xclip

10

उबंटू 12 पर

आप vim-gnomeपैकेज को स्थापित करने का प्रयास कर सकते हैं :

sudo apt-get install vim-gnome

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

-> उबंटू 12 पर vim-gnome पैकेज स्थापित करके vim का कंसोल आधारित संस्करण भी स्थापित किया गया है, जिसमें यह विकल्प सक्षम है (संकेत दिया गया है + xterm_clipboard ध्वज से पहले )

आर्क लिनक्स पर

आप vim-clipboardउसी कारण से स्थापित कर सकते हैं ।

आप neovim चलाते हैं तो आप स्थापित करना चाहिए xclip(से समझाया के रूप में help clipboard-tool)


1
unix.stackexchange.com/questions/25965/… क्या कोई अन्य विकल्प है जो कोई भी जानता है?
संदीप पिंगले 10

6

यदि आप दृश्य मोड में विम का उपयोग कर रहे हैं, तो मानक कट और पेस्ट कुंजी भी लागू होती हैं, कम से कम विंडोज के साथ।

  • CTRLA का अर्थ है "संपूर्ण फ़ाइल को चिह्नित करें।
  • CTRLC का अर्थ है "चयन की प्रतिलिपि बनाएँ।
  • ESC "डी-सेलेक्ट का अर्थ है, इसलिए आपका अगला कुंजी प्रेस संपूर्ण फ़ाइल को प्रतिस्थापित नहीं करता है :-)

कम से कम उबंटू टर्मिनल (ग्नोम) के तहत, मानक प्रति भी काम करती है ( CTRLSHIFTC, हालांकि इसके लिए एक मानक कीबोर्ड शॉर्टकट नहीं है ) select all( ALTEइसके बाद अन्य A)।


6
लेकिन यदि आप mswin.vim का उपयोग नहीं कर रहे हैं, तो ctrl-current लाइन पर अगला नंबर बढ़ाता है।
मार्क रुशखॉफ़

@ मार्क, यह व्यवहार एक मानक विम इंस्टाल से है इसलिए मुझे लगता है कि यह डिफ़ॉल्ट है। पर्यावरण अलग तरीके से कॉन्फ़िगर होने पर सभी दांव बंद हो जाते हैं, हालांकि अगर ऐसा होता, तो मुझे संदेह है कि ओपी को पता होगा कि वे क्या कर रहे हैं :-) या तो मामले में, ओपी ने एक टिप्पणी में कहा कि वे उबंटू पर थे इसलिए विंडोज का हिस्सा मेरा जवाब शायद लागू नहीं होता। सूक्ति टर्मिनल सामान होगा।
paxdiablo

5

आप फ़ाइल की शुरुआत के लिए अपने क्यूरर का पता लगाने के लिए gg दबा सकते हैं, फिर yG को दबाकर शुरू से अंत तक सभी सामग्री कॉपी कर सकते हैं (जी स्थित) बफर.गुड लक!


4

मैंने उन कुछ कमांड्स की कोशिश की, जिनका लोगों ने ऊपर उल्लेख किया है। किसी ने काम नहीं किया। फिर मैंने उन सभी को सबसे सरल पकड़ लिया।

चरण 1: vi <filename>
चरण 2: पोटीन विंडो के शीर्षक पट्टी पर राइट क्लिक करें
चरण 3: "स्पष्ट स्क्रॉलबैक" चुनें (अपने एसएसएच सत्र के बाकी हिस्सों की नकल से बचने के लिए)
चरण 4: फिर से राइट क्लिक करें और "सभी को क्लिपबोर्ड पर कॉपी करें" चुनें।


1
15000 लाइन फाइल के लिए, इसने यह सब नहीं पकड़ा। मुझे अपनी पुट्टी Window > Settings > lines of scrollbackको 40000 तक बढ़ाने की जरूरत थी (टाइटल बार पर राइट क्लिक करके भी उपलब्ध)। यह catvi के बजाय उपयोग करने में भी मदद करता है क्योंकि यह सभी पाठ के माध्यम से स्क्रॉल करता है।
नौमेनन

1
मैंने हमेशा इस तरह से फ़ाइल के ऊपर और नीचे से लाइनें खोना समाप्त किया। अब मैं क्या कर रहा हूं बिल्ली, फिर चयन को विस्तारित करने के लिए फ़ाइल के प्रारंभ और अंत में मध्य-क्लिक करें।
noumenon

जब मैं इस कोशिश की मैं केवल स्क्रीन पर 111 लाइनों मिल गया, लेकिन मेरी फाइल में 174 लाइनों, देखते हैं तो noumenon की बिल्ली जवाब मेरे लिए काम किया
seizethecarp

3

:%y aसभी सामग्री को vim के बफर में जमा करता है, pकमांड मोड में दबाने से उस लाइन के बाद याँक की गई सामग्री चिपक जाएगी जिसे आपका कर्सर वर्तमान में खड़ा है।


3

जाँचने:

:set go=a

ggVG

देखें :help go-a:

'a' Autoselect:  If present, then whenever VISUAL mode is started,
 or the Visual area extended, Vim tries to become the owner of
 the windowing system's global selection.  This means that the
 Visually highlighted text is available for pasting into other
 applications as well as into Vim itself.  When the Visual mode
 ends, possibly due to an operation on the text, or when an
 application wants to paste the selection, the highlighted text
 is automatically yanked into the "* selection register.
 Thus the selection is still available for pasting into other
 applications after the VISUAL mode has ended.
     If not present, then Vim won't become the owner of the
 windowing system's global selection unless explicitly told to
 by a yank or delete operation for the "* register.
 The same applies to the modeless selection.

3

खैर, ये सभी दृष्टिकोण दिलचस्प हैं, हालांकि आलसी प्रोग्रामर के रूप में मैं नंबर + के संयोजन का उपयोग करके सभी लाइन का उपयोग करता हूं y

उदाहरण के लिए आपके पास कुल 78 लाइनों के साथ स्रोत कोड फ़ाइल है, आप नीचे के रूप में कर सकते हैं:

  1. gg पहली पंक्ति में कर्सर लाने के लिए
  2. 78 + y -> डालें, यह आपके कर्सर और करंट लाइन के नीचे 78 लाइनें देता है

2

बिल जॉय के vi में "क्लिपबोर्ड" की अवधारणा नहीं थी, इसलिए मुझे नहीं लगता कि ऐसा करने का कोई अंतर्निहित तरीका है।

gVim की स्वचालित कॉपी-कुछ भी हाइलाइट-टू-द-क्लिपबोर्ड सुविधा सबसे आसान है या इसके माध्यम से बाहरी प्रोग्राम का उपयोग करें:!

साइगविन के विम के लिए मैं उपयोग करता हूं

:%!putclip
u

शायद उबंटू में पुट्टी जैसा सीएलआई ऐप है ??


महान सुझाव, धन्यवाद! इस तरह का एक कार्यक्रम है, जिसे एक्लिप्स कहा जाता है। विवरण के लिए, मैंने एक अलग उत्तर पोस्ट किया (यह अतिरिक्त newlines और कोड स्वरूपण के बिना, एक टिप्पणी से पढ़ने के लिए बहुत भ्रामक होगा)।
स्टू

2

यदि आपकी उंगलियां डिफ़ॉल्ट हैं CTRL-A CTRL-C, तो मैपिंग से प्रयास करें $VIMRUNTIME/mswin.vim

" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y

" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG

मैं उन्हें करने के लिए मैप किया गया है <Leader><C-a>और <Leader><C-c>


2

संपूर्ण फ़ाइल को vim या उसके टैब के अंदर कॉपी करें

y G 

फिर एक टैब पर जाएं और पेस्ट करें

p

और पूरी फ़ाइल उपयोग में कटौती करने के लिए

d G

2

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

nnoremap <F5> :%y+<CR>

यह मुझे Vim में सभी पाठ को क्लिपबोर्ड पर F5(कमांड मोड में) दबाकर कॉपी करने की अनुमति देता है ।


1

CTRL+ का उपयोग करके क्लिपबोर्ड पर सभी का चयन करने के लिए यहां एक मैप कमांड है a:

"
" select all with control-a
"
nnoremap <C-a> ggmqvG"+y'q

इसे अपने .vimrc में जोड़ें और आप जाने के लिए अच्छे हैं ...


1

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

इसलिए, दूरस्थ लिनक्स पर कॉपी करने और स्थानीय विंडोज पर पेस्ट करने के लिए, प्राथमिक बफर को इसके साथ निर्दिष्ट करें * और एक अच्छा डबल यैंक करें

का उपयोग करें gg" * yy


0

मैंने इस क्रिया को करने के लिए एक फ़ंक्शन बनाया है, इसे अपने पर रखें ~/.vimrc

fun! CopyBufferToClipboard()
    %y+
endfun
nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()

OBS: यदि आप नवोन्मेष का उपयोग कर रहे हैं, तो आपको कुछ क्लिपबोर्ड प्रबंधक की आवश्यकता है जैसे कि xclip। अधिक जानकारी के लिए neovim में टाइप करें:h checkhealth

यह भी उल्लेख करना महत्वपूर्ण है कि हमेशा एक साधारण yक्लिपबोर्ड पर कॉपी नहीं होगा, प्रत्येक कॉपी फीड बनाने के +लिए "क्लिपबोर्ड रजिस्टर" सेट करने का प्रयास करें :set clipboard=unnamed,unnamedplus:। नैतिक जानकारी के लिए देखें::h unnamed

यहाँ विम विकिया के बारे में अधिक जानकारी।


-1

बाईं माउस बटन पर क्लिक करें, उस अनुभाग पर खींचें, जिसे आप कॉपी और रिलीज़ करना चाहते हैं। कोड स्वचालित रूप से क्लिपबोर्ड पर कॉपी हो जाता है।


3
फ़ाइल बहुत बड़ी हो सकती है, और एक माउस के साथ पूरे पाठ को खींचना उत्पादक नहीं है (न ही एक viतरीका)।
डॉ। बीईओ

1
वास्तव में यह एक अच्छा जवाब है और मेरे लिए काम करता है। मेरे सिस्टम में, पर्यावरण वी प्रतिबंधक है। मुझे स्क्रीन पर आउटपुट को कैट करना है, और फिर माउस को ड्रैग, सिलेक्ट और रिलीज़ करने के लिए उपयोग करना है .. फिर मैं विंडोज नोटपैड ++ पर कॉपी करता हूं .. और बढ़िया काम करता हूं। और कुछ काम नहीं करता।
अपूर्वा सिंह

-1

मैं ऊपर दिए गए उत्तरों का उपयोग करके फ़ाइलों की प्रतिलिपि नहीं बना सकता, लेकिन मेरे पास पोटीन है और मुझे Quora पर वर्कअराउंड मिला।

  1. अपने PuTTY सत्र की सेटिंग बदलें, लॉगिंग पर जाएं और इसे "प्रिंट करने योग्य वर्ण" में बदलें। लॉग फ़ाइल सेट करें
  2. संबंधित फ़ाइल की एक बिल्ली करो
  3. चरण 1 में आपके द्वारा सेट की गई फ़ाइल पर जाएं और लॉग फ़ाइल में आपकी सामग्री होगी।

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

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