क्या सिस्टम क्लिपबोर्ड पर पाठ के ब्लॉक को कॉपी करने का एक तरीका है, इसलिए मैं इसे किसी अन्य प्रोग्राम में पेस्ट कर सकता हूं?
cpip
, cpi{
।
क्या सिस्टम क्लिपबोर्ड पर पाठ के ब्लॉक को कॉपी करने का एक तरीका है, इसलिए मैं इसे किसी अन्य प्रोग्राम में पेस्ट कर सकता हूं?
cpip
, cpi{
।
जवाबों:
के लिए X11 आधारित सिस्टम (। यानी लिनक्स और अधिकांश अन्य यूनिक्स की तरह सिस्टम) वहाँ दो clipboards जो एक दूसरे से स्वतंत्र हैं:
^C
, और इसके साथ चिपकाया जाता है ^V
(यह एमएस विंडोज की तरह है)।ओएस एक्स और विंडोज सिस्टम में केवल एक क्लिपबोर्ड होता है।
X11 सिस्टम के लिए ऐसे उपकरण भी हैं जो आपके लिए इन क्लिपबोर्ड को सिंक्रनाइज़ करते हैं; इसलिए यदि वे समान प्रतीत होते हैं, तो आपके पास उनमें से एक चल सकता है।
विम के पास इन क्लिपबोर्डों के अनुरूप दो विशेष रजिस्टर हैं:
*
PRIMARY का उपयोग करता है; mnemonic: S tar S चुनाव है (कॉपी-ऑन- s चुनाव के लिए)+
क्लिपबोर्ड का उपयोग करता है; mnemonic: CTRL PLUS C (सामान्य कीबाइंड के लिए)Windows और ओएस एक्स पर वहाँ कोई अंतर नहीं है +
और *
के बाद से इन पद्धतियों केवल एक ही क्लिपबोर्ड है, है, और दोनों रजिस्टरों (यह कोई बात नहीं है जो आप उपयोग) एक ही बात को देखें।
आप किसी भी रजिस्टर के रूप में इन रजिस्टरों का उपयोग कर सकते हैं। उदाहरण के लिए, प्राथमिक क्लिपबोर्ड का उपयोग कर *
के साथ y
और p
कमांड:
"*yy
"*p
आप शायद इसे अधिक सुविधाजनक कीबाइंड के रूप में उपयोग कर सकते हैं:
noremap <Leader>y "*y
noremap <Leader>p "*p
noremap <Leader>Y "+y
noremap <Leader>P "+p
यदि आप हर समय मैन्युअल रूप से संदर्भित करने के बजाय सिस्टम के क्लिपबोर्ड के साथ "स्वचालित रूप से" इंटरफ़ेस करना चाहते हैं, तो आप clipboard
चर सेट कर सकते हैं :
unnamed
उपयोग करने के लिए इसे सेट करें *
(चयन पर, प्राथमिक)unnamedplus
उपयोग करने के लिए इसे सेट करें +
(CLIPBOARD, ^C
)अब, केवल उपयोग yy
करने से सिस्टम के क्लिपबोर्ड पर जाएगा, विम के अनाम रजिस्टर के बजाय, और p
सिस्टम के क्लिपबोर्ड को पेस्ट करेगा।
आप इन रजिस्टरों को भी किसी रजिस्टर की तरह असाइन कर सकते हैं let
:
:let @+=42
:let @*=42
clipboard
सेटिंग (जैसे फ़िल्टर को बाहर के रूप में) कुछ और विकल्प है, लेकिन ये मूल बातें हैं। :help 'clipboard'
पूरी कहानी के लिए देखें ;-)
यदि आप gVim का उपयोग करते हैं, तो आप उपयोग करते समय कॉपी-ऑन-सिलेक्ट व्यवहार प्राप्त कर सकते हैं
:set guioptions+=a
।
यह X11 सिस्टम (PRIMARY की प्रतियां) पर डिफ़ॉल्ट रूप से सक्षम है, लेकिन MS Windows & OSX पर नहीं (जैसा कि किसी पाठ का चयन करने से आपका क्लिपबोर्ड ओवरराइड हो जाएगा)।
+clipboard
?विम को +clipboard
काम करने के लिए किसी भी सुविधा के झंडे की आवश्यकता होती है ; आप देख सकते हैं कि आपके विम का उपयोग करके यह है :echo has('clipboard')
(यदि उत्पादन होता है विम के भीतर से 0
, यह नहीं , वर्तमान अगर यह 1
है, यह है), या के उत्पादन की जाँच
vim --version
के लिए +clipboard
।
अधिकांश लिनक्स वितरण डिफ़ॉल्ट रूप से "न्यूनतम" विम निर्माण के साथ जहाज होता है, जो नहीं होता है +clipboard
, लेकिन आप इसे आमतौर पर स्थापित कर सकते हैं:
vim-gtk
या vim-gnome
।vim-X11
, और चलाएं ।vimx
vim
gvim
(यह +clipboard
सामान्य vim
रूप से भी सक्षम होगा )।तुम भी इस्तेमाल कर सकते हैं xclip
, xcopy
या xsel
क्लिपबोर्ड में टेक्स्ट कॉपी करने के लिए; समाधान के लिए निम्नलिखित प्रश्न देखें:
यदि आप SSH पर X11 अग्रेषण को सक्षम करते हैं तो आप दूरस्थ मशीनों पर क्लिपबोर्ड का भी उपयोग कर सकते हैं। यह उपरोक्त टिप के साथ विशेष रूप से उपयोगी है क्योंकि आप तब xclip
अपने डेस्कटॉप के क्लिपबोर्ड तक पहुंचने के लिए उपयोग
कर सकते हैं। जिस मशीन पर आप ssh-ing कर रहे हैं उस पर विम को अभी भी +clipboard
फीचर की आवश्यकता होगी ।
इसके लिए ForwardX11Trusted
सेटिंग की आवश्यकता होती है , और इसे केवल विश्वसनीय सर्वरों के साथ किया जाना चाहिए , क्योंकि यह सर्वर को आपके X11 सत्र पर लगभग पूर्ण नियंत्रण प्रदान करता है:
$ ssh -XY myhost
इन सेटिंग्स को निरंतर बनाने के लिए (ताकि आपको -XY
हर बार जोड़ने की आवश्यकता न हो), आप अपने में कुछ ऐसा कर सकते हैं ~/.ssh/config
:
# Do **NOT** set this globally; it gives the server complete control over
# your X11 session.
Host myhost
ForwardX11 yes
ForwardX11Trusted yes
नेओविम ने क्लिपबोर्ड समर्थन को फिर से नया किया। में निर्मित इंटरफ़ेस निकाल और एक प्रणाली है कि इस तरह के रूप में एक बाहरी उपयोगिता फोन के साथ बदल दिया गया था xclip
, xsel
या
pbcopy
/ pbpaste
।
इसे स्वचालित रूप से इन उपयोगिताओं को चुनना चाहिए और उनका उपयोग करना चाहिए। ओएस एक्स पर pbcopy
और pbpaste
डिफ़ॉल्ट रूप से उपलब्ध होना चाहिए, लिनक्स पर आप शायद स्थापित करना चाहते हैं xclip
, क्योंकि यह सबसे व्यापक रूप से उपलब्ध है (वास्तव में असंगत झंडे
के साथ दो संस्करण हैं । यह वास्तव में बेवकूफ है)।xsel
इसके अलावा :help clipboard
Neovim में देखें।
"<Space>
एक पाने के लिए प्रेस करने की आवश्यकता हो सकती है "
। तो उन मामलों में आपको प्रेस करना होगा "<Space>+y
या "<Space>*y
कॉपी करना होगा।
"
कई नामित रजिस्टरों का चयन कर सकता है। "+
जादू नहीं है, यह सिर्फ रजिस्टर है +
। उदाहरण के लिए, आप एक ही समय में तीन बातें कॉपी और एक के बाद एक, आप कर सकते हैं द्वारा उनमें से प्रत्येक पेस्ट करना चाहते हैं "1y
, "2y
और "3y
बाद में और "1p
, "2p
और "3p
। यह लगभग किसी भी अन्य संपादक में वास्तव में शक्तिशाली और गैर-मौजूद है। एक और दिलचस्प उपयोग संग्रहीत मैक्रोज़ को देखने के लिए है। उदाहरण के लिए, यदि आप के साथ रिकॉर्ड करते हैं qq
, लेकिन आपको पता है कि आपको इसे ठीक करने की आवश्यकता है, तो आप कर सकते हैं: एक अस्थायी रेखा में "qp
, इसे ठीक करें, और "qd
।
अन्य उत्तर कवर करते हैं कि सिस्टम क्लिपबोर्ड में अपने बफर से टेक्स्ट को कॉपी कैसे करें। एक अन्य सामान्य ऑपरेशन एक अन्य रजिस्टर से क्लिपबोर्ड पर पाठ की प्रतिलिपि बनाना है । उदाहरण के लिए, यदि आपने पहले ही कुछ पाठ "
(डिफ़ॉल्ट रजिस्टर) में जमा कर दिया है, तो आप उस रजिस्टर को क्लिपबोर्ड में लोड करना चाह सकते हैं।
आप इसके साथ कर सकते हैं :let
:
let @+=@"
- क्लिपबोर्ड में डिफ़ॉल्ट रजिस्टर को कॉपी करता हैlet @*=@"
- X11 प्राथमिक चयन में डिफ़ॉल्ट रजिस्टर की प्रतिलिपि बनाता है ("माउस क्लिपबोर्ड")let @+=@a
- रजिस्टर a
से क्लिपबोर्ड पर कॉपी करेंध्यान दें कि यह सामान्य रूप से रजिस्टरों के लिए काम करता है: let @a=@b
प्रतियां रजिस्टर b
करने के लिए रजिस्टर करती हैं a
।
से http://vim.wikia.com/wiki/Accessing_the_system_clipboard
set clipboard=unnamedplus
यह डिफ़ॉल्ट विम रजिस्टर को रजिस्टर में बदलता है +
, जो सिस्टम क्लिपबोर्ड से जुड़ा हुआ है। से :h clipboard-unnamedplus
:
clipboard-unnamedplus
unnamedplus A variant of the "unnamed" flag which uses the
clipboard register '+' (quoteplus) instead of
register '*' for all yank, delete, change and put
operations which would normally go to the unnamed
register. When "unnamed" is also included to the
option, yank operations (but not delete, change or
put) will additionally copy the text into register
'*'.
Only available with the +X11 feature.
Availability can be checked with:
if has('unnamedplus')
:version
विम का उपयोग करके देख सकते हैं कि क्या + X11 शामिल विशेषताओं की सूची में दिखाई देता है। आप यह भी देख सकते हैं कि क्या 'अनाम' सुविधा उपलब्ध है :if has('unnamedplus')⏎ echo 'yes'⏎ endif
यदि आप लिनक्स पर नहीं हैं तो आपको अनाम के बजाय अनाम का उपयोग करना चाहिए।
इसे बनाने वाले समर्थन पर, रजिस्टर नाम *
सिस्टम क्लिपबोर्ड है। सिस्टम क्लिपबोर्ड पर विम से पाठ की प्रतिलिपि बनाने के लिए, आप दृश्य मोड का उपयोग करके पाठ का चयन कर सकते हैं, फिर "*yइसे सिस्टम क्लिपबोर्ड पर कॉपी करने के लिए दबाएं ।
इसके विपरीत, "*pसिस्टम क्लिपबोर्ड से पाठ को विम में पेस्ट करने के लिए उपयोग करें।
मेरा सुझाव है कि आप Gvim का उपयोग करें, और इसे अपने में जोड़ें .vimrc
:
source $VIMRUNTIME/mswin.vim
behave mswin
इस के लिए समर्थन सक्षम बनाता है CtrlC, CtrlX, CtrlVविंडोज में नोटपैड की तरह।
ध्यान दें कि यह भी इस तरह के रूप में, कुछ अन्य आम विंडोज शॉर्टकट जोड़ देगा CtrlSके लिए :w
, CtrlAके लिए सभी का चयन करें, आदि
हर दूसरे जवाब में रजिस्टरों के बारे में सभी महत्वपूर्ण बातें शामिल हैं। मैं एक और चीज जोड़ना चाहूंगा जिसका मैं उपयोग करता हूं।
क्लिपबोर्ड पर नेत्रहीन चयनित पाठ को सीधे कॉपी करने के लिए विम में एक तरीका है । बस इसे अपनी vimrc फाइल में डालें :
set guioptions+=a
और, इसके साथ जब भी आप नेत्रहीन कुछ पाठ का चयन करेंगे तो वह आपके क्लिपबोर्ड पर कॉपी हो जाएगा। इस बारे में अधिक जानकारी के लिए,:help guioptions
BTW, यह केवल gVim के लिए है।
guioptions+=a
Carpetsmoker के उत्तर में भी उल्लेख किया गया है।
आप क्लिपबोर्ड पर कुछ विशिष्ट पैटर्न डालने के लिए एक वैश्विक कमांड का उपयोग भी कर सकते हैं। यह उन स्थितियों में उपयोगी हो सकता है जहां आपके पास फ़ाइल में बिखरी हुई जानकारी होती है और मैन्युअल रूप से नकल करने में त्रुटि और थकावट होती है।
पहले उस रजिस्टर को साफ करें जो जानकारी प्राप्त करेगा
:let @a=""
फिर पैटर्न वाली सभी लाइनों को कॉपी करें
:g/pattern/yank A
अंत में सिस्टम क्लिपबोर्ड को सूचना की प्रतिलिपि बनाना (कॉपी करना)
:let @+=@a
यदि आप क्लिपबोर्ड पर सीधे "पैटर्न" वाली प्रत्येक पंक्ति को कॉपी करने का प्रयास करते हैं तो यह काम नहीं करेगा क्योंकि क्लिपबोर्ड में नई सामग्री को जोड़ने की क्षमता नहीं है, इस प्रकार हम यहां उन सभी लाइनों को स्टोर करने के लिए एक सामान्य विम रजिस्टर का उपयोग कर रहे हैं एक बार में पैटर्न और फिर इसे क्लिपबोर्ड पर रखना।
OBS: यह उपयोग करने से पहले रजिस्टर को क्लिंज करना आवश्यक है, और रजिस्टर के UPPERCASE संस्करण का उपयोग हमें सामग्री को जोड़ने की अनुमति देता है, अन्यथा यह काम नहीं करेगा।
यदि आप यह पता नहीं लगा सकते हैं कि +clipboard
काम कैसे करना है , जिसे मैं किसी कारण से नहीं कर सका, तो आप ऐसा कर सकते हैं।
यह मानते हुए कि आप केवल फ़ाइल के एक भाग की प्रतिलिपि बनाना चाहते हैं, मैं विज़ुअल मोड में जाने के लिए shift
+ v
केवल उन रेखाओं को हाइलाइट करता हूं जिन्हें मैं कॉपी करना चाहता हूं। तब मैं ऐसा करता हूं।
# Linux Wayland
:'<,'>w !wl-copy
# Linux Xorg
:'<,'>w !xclip -selection clipboard
व्याख्या
'<,'>
- इसका मतलब है कि आपने किसी रेंज का चयन करने के लिए विज़ुअल मोड का उपयोग किया है (आप इसे टाइप नहीं करते हैं)w !{cmd}
- की सीमा को लिखें cmd
, और देखें:help w_c
wl-copy
और xclip
ऐसे प्रोग्राम हैं जिन्हें आप टेक्स्ट को पाइप कर सकते हैं और वे इसे आपके सिस्टम क्लिपबोर्ड में जोड़ देंगेइसके अलावा, एक बार यह आपके इतिहास में होने के बाद, आपको पूरी बात फिर से टाइप करने की जरूरत नहीं है। बस दृश्य मोड के साथ चयन करें, w
फिर दबाएं और कमांड को स्वत: पूर्ण होना चाहिए। इसके अलावा, इसके अलावा, आपको दृश्य मोड का उपयोग करने की आवश्यकता नहीं है। आप जो भी रेंज चाहें सेट कर सकते हैं।