टर्मिनलों में नकल कैसे करें?


11

मैं लिनक्स सिस्टम का उपयोग कर रहा हूं। दो टर्मिनलों को दो टर्मिनलों में खोला जाता है। अब मैं A से B. तक के पाठ को कॉपी करना चाहता हूं। ऐसा करने का एक तरीका है कि A में पाठ का चयन करें, कॉपी करने के लिए माउस का उपयोग करें, फिर B को स्विच मोड में डालें, कमांड <c-r>+टेक्स्ट को पेस्ट करेगा।

माउस का उपयोग किए बिना इसे प्रदर्शन करने के लिए वैसे भी क्या है? "+yyA की तरह , जब B से स्विच करते हैं o<c-r>+,? मैंने व्यर्थ में संयोजनों के जोड़े की खोज की। और मैंने "प्रतिलिपि भर में टर्मिनलों" की खोज की, लेकिन कुछ भी नहीं पाया।

user @statox दृश्य मोड का उपयोग करके एक समाधान सुझाता है, यानी v$"+yA में, जब B पर स्विच किया जाता है o<c-r>+

क्या कोई सरल तरीका है जो वी मोड में प्रवेश किए बिना ए में पाठ को कॉपी कर सकता है? माना जाता है कि वी-मोड में प्रवेश करने पर बहुत अधिक महत्वपूर्ण हमले नहीं होते हैं, बस आश्चर्य होता है कि क्या बेहतर तरीका है। उदाहरण के लिए। यदि कर्सर एक लाइन के बीच में है, yyतो पूरी लाइन (रजिस्टर करने के लिए ") को कॉपी 0v$yकरता है , जबकि अतिरिक्त कुंजी स्ट्रोक के साथ भी यही काम करता है।

या, मेरे सवाल अगर वहाँ की तुलना में कम कुंजी स्ट्रोक्स से किसी भी तरह से है करने के लिए कम किया जा सकता 0v$"+yके लिए प्रति ऐसी है कि मैं उपयोग कर सकते हैं <alt-tab>o<c-r>+चिपकाने के लिए।


आपकी सटीक समस्या क्या है? आपको समाधान लगता है: आप दृश्य मोड के साथ पाठ का चयन करें (माउस का उपयोग क्यों करेगा?) इसे क्लिपबोर्ड रजिस्टर "+yमें रखें और दूसरे में उदाहरण क्लिपबोर्ड रजिस्टर डालें "+p। या इस की नकल ?
statox

आपको कुछ करने के लिए दृश्य मोड में प्रवेश करने की आवश्यकता नहीं है। आप yएक प्रस्ताव ( :help motion.txt) या एक वस्तु ( :help object-select) के साथ पालन ​​कर सकते हैं । यदि आप अक्सर विम उदाहरणों में भरते हैं और चिपकाते हैं, तो आपको वह सेटिंग clipboardशामिल unnamedया unnamedplusउपयोगी लग सकती है। देख लो :help 'clipboard'। तब उदाहरणों के बीच नकल सिर्फ काम करना चाहिए।
गैरीजोन

1
मेरी टिप्पणी का बिंदु दृश्य विधा नहीं था, वास्तव में मुझे आपकी समस्या को समझने में परेशानी हो रही है: पहले मैंने सोचा था कि यह एक टर्मिनल से दूसरे में कुछ पाठ को कॉपी करने के लिए तथ्य था, अब ऐसा लगता है कि यह कुछ कीस्ट्रोक्स के रूप में उपयोग करने के बारे में है क्लिपबोर्ड रजिस्टर में yank करने के लिए संभव है। यदि वह दूसरा मामला है तो गैरीजोन की टिप्पणी प्रासंगिक है।
statox

1
0v$के रूप में ही है V। और इसके लिए एक मानचित्रण करना आसान है "+y: :nnoremap <Leader>y "+y। ताकि यह कम हो जाए V\y
मार्टिन टूरनोइज

@Carpetsmoker आपका समाधान अच्छा है। यदि आप इसे उत्तर क्षेत्र में पेस्ट करते हैं, तो मैं इसे इष्टतम समाधान के रूप में लेना चाहता हूं। ऐसा लगता है कि मुख्य मानचित्र के बिना, हम अपने प्रश्न में प्रतिलिपि के लिए सबसे अच्छा कर सकते हैं V"+y, 4 कीस्ट्रोक्स।
user3813057

जवाबों:


9

आप जांच कर सकते हैं कि विम क्लिपबोर्ड समर्थन के साथ बनाया गया है या नहीं:

:echo has('clipboard')

यदि आउटपुट है 1, तो अपना लक्ष्य प्राप्त करने के लिए निम्नलिखित पर्याप्त होना चाहिए:

"*y    in source Vim
"*p    in destination Vim

आप क्लिपबोर्ड रजिस्टर और अपने में इस सेटिंग के साथ डिफ़ॉल्ट रजिस्टर को सिंक्रनाइज़ करके इसे बहुत अधिक सहज बना सकते हैं vimrc:

set clipboard^=unnamed

यदि का आउटपुट :echo has('clipboard')है 0, तो उचित Vim जैसे vim-gtkया vim-gnome(पैकेज का नाम डिस्ट्रो से डिस्ट्रो तक भिन्न हो सकता है) स्थापित करने पर विचार करें ।


1

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

vmap <leader>y "+y
vmap <leader>d "+d
nmap <leader>p "+p
nmap <leader>P "+P
vmap <leader>p "+p
vmap <leader>P "+P

दूसरी प्रविष्टि यहाँ देखें ।


1

@ Romainl के उत्तर का विस्तार करने के लिए, (क्लिपबोर्ड समर्थन के साथ) आप उन रजिस्टरों का उपयोग कर सकते हैं जो सिस्टम वाइड क्लिपबोर्ड के साथ साझा किए गए हैं।

"+y    To yank/copy from a vim-terminal
"+p    To paste in destination vim-terminal

"*y    To yank/copy from a vim-terminal
"*p    To paste in destination vim-terminal

इन आदेशों को क्रियान्वित करने से, आप कर रहे हैं y anking / को कॉपी / रजिस्टरों में चयनित सामग्री के भंडारण, और पी गंतव्य के लिए asting उन्हें विम टर्मिनल। ये दो विशेष रजिस्टर +और *सिस्टम वाइड क्लिपबोर्ड के साथ साझा किए जाते हैं (और इसलिए कई अन्य प्रोग्राम जैसे वेब ब्राउज़र, जीडिट आदि)। रजिस्टर +कॉपी / पेस्ट बफर *के साथ जुड़ा हुआ है और चयन बफर के साथ जुड़ा हुआ है (एक, जो कि, Ubuntu, में एक पाठ क्षेत्र पर एक मध्य क्लिक के साथ चयन की एक कॉपी सम्मिलित करता है) और ctrl + v( ctrl + shift + vगनोम-टर्मिनल पर) का उपयोग करके चिपकाया जा सकता है ।


1

1) फेडोरा पर मैं निम्नलिखित सेटअप का उपयोग करता हूं:

dnf install vim-X11

vim-X11 क्लिपबोर्ड सपोर्ट के साथ आता है - शायद अन्य डिस्ट्रोस में भी ऐसा ही है।

2) मेरे .bashrc में एक उपनाम सेट करें

alias vim="vimx"

3) .vimrc में:

set clipboard=unnamedplus

अब विम में सामान्य यान सिस्टम क्लिपबोर्ड में चला जाता है और विम के बाहर प्रत्येक Ctrl-C को विम में चिपकाया जा सकता है।


0

यदि आप एक मैक (OSX) का उपयोग कर रहे हैं, तो आप bpcopy स्थापित कर सकते हैं ( अधिक विवरण के लिए काढ़ा स्थापित करें pbcopy --see http://brew.sh/ )। फिर माउस को छुए बिना निम्नलिखित (स्ट्रेट फॉर्म कमांडलाइन) चलाएं :

उदाहरण:

1) टर्मिनल # 001 में :

cat /tmp/stuff.txt | pbcopy

2) आप OSX के टर्मिनल एप्लिकेशन में अंतर्निहित गर्म कुंजियों का उपयोग करके टर्मिनल # 002 (माउस का उपयोग किए बिना) पर स्विच कर सकते हैं: command+i

3) टर्मिनल # 002 में : नई फ़ाइल को विम में खोलें

vi newfile

4) डालने के मोड के साथ विम रखो i

5) क्लिपबोर्ड से टेक्स्ट डालें command+ V(क्लिपबोर्ड से मैक पर चिपकाने के लिए)

6) अपने दिन के आराम का आनंद लें!

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