पाठ को एक tmux फलक से दूसरे में कॉपी करें (vim का उपयोग करके)


132

मेरे पास विम में दो फाइलें हैं, प्रत्येक में एक tmux पेन है। मैं यह कहना चाहूंगा कि एक फाइल से दूसरी फाइल में 10 लाइनें कहें।

मैं यह कैसे पूरा उपयोग नहीं कर माउस के कर सकते हैं Copy-> Paste?


2
आप tmux को शामिल कर सकते हैं , लेकिन आम तौर पर सरल तरीके हैं। दोनों एक ही (स्थानीय?) मशीन पर विम उदाहरण हैं? आमतौर पर, मैं बस उसके लिए एक अस्थायी फ़ाइल का उपयोग करूंगा (यानी नेत्रहीन लाइनों का चयन करें :w /tmp/lines, फिर :r /tmp/linesदूसरे उदाहरण में)। या, यदि आपका विम आपके सिस्टम क्लिपबोर्ड से बात करना जानता है, तो आप अस्थायी फ़ाइल से बचने के लिए +या *रजिस्टरों का उपयोग कर सकते हैं ।
क्रिस जॉन्सन

जवाबों:


192

आपको tmux शॉर्टकट का उपयोग करना होगा। अपने tmux कमांड शॉर्टकट को मान लेना डिफ़ॉल्ट है: Ctrl+ b, फिर:

  1. Ctrl+ b, [कॉपी (?) मोड दर्ज करें।

  2. हाइलाइट करने के लिए पाठ के प्रारंभ / अंत पर जाएं।

  3. Ctrlspace

    टेक्स्ट हाइलाइट करना शुरू करें (आर्क लिनक्स पर)। जब मैंने OSX और अन्य लिनक्स पर स्रोत से tmux संकलित किया है, तो बस Spaceअपने आप ही काम करता है। चयनित पाठ रंग बदलता है, तो आपको पता चल जाएगा कि क्या कमांड ने काम किया है।

  4. कॉपी करने के लिए टेक्स्ट के विपरीत छोर पर जाएं।

  5. Alt+ wप्रतियां tmux क्लिपबोर्ड में पाठ का चयन किया। (मैक उपयोग Esc+ पर w)

  6. कर्सर को tmux फलक के विपरीत, या पूरी तरह से अलग tmux विंडो में ले जाएँ। वह कर्सर रखें जहाँ आप उस पाठ को पेस्ट करना चाहते हैं जिसे आपने कॉपी किया है।

  7. Ctrl+ b, ]Tmux क्लिपबोर्ड से कॉपी पेस्ट टेक्स्ट।

कस्टम कीबोर्ड शॉर्टकट के लिए कमांडिंग मैपिंग में tmux काफी अच्छा है।

देखें Ctrl+ b, ?सेट कीबोर्ड शॉर्टकट की पूर्ण सूची के लिए।


4
धन्यवाद। सिर्फ एक सिडेनोड: द अल्ट + डब्ल्यू ने मैक पर काम नहीं किया। Alt डिफ़ॉल्ट रूप से Esc में मैप किया गया था। इसलिए यह Esc + w है।
करण

11
यदि आप screenशॉर्टकट का उपयोग करते हैं : Ctrl + A [(कॉपी-मोड दर्ज करें), Space(हाइलाइटिंग शुरू करें), Enter(एंड हाइलाइटिंग), Ctrl + A ](पेस्ट)।
9 अक्टूबर को 9

11
वर्थ नोटिंग कि "एंटर" मेरे लिए काम करता है जबकि alt + w नहीं करता है।
एलिजा लिन

3
जैसा कि awhan.wordpress.com/2010/06/20/copy-paste-in-tmux में उल्लेख किया गया है , यदि आपके पास vi कुंजी बाइंडिंग है, तो चरण 5 को Enterकुंजी से बदला जाना चाहिए ।
यिंग जिओंग

2
क्या होगा यदि मुझे एक पाठ संपादक की कॉपी और पेस्ट करने की आवश्यकता है? किसी कारण से यह उस पाठ को चुनने के बाद भी 'एन्टर' दबाने के बाद भी उस चयनित टेक्स्ट को नहीं लगता है।
uday

33

दुर्भाग्य से, मैं एलेक्स लीच के जवाब में अभी तक एक टिप्पणी नहीं जोड़ सकता हूं इसलिए मैं मैक ओएस एक्स उपयोगकर्ताओं के लिए यहां एक परिशिष्ट शामिल करने जा रहा हूं:

  1. Enter चयनित पाठ की प्रतिलिपि बनाता है

1
धन्यवाद! मैं Ubuntu Xenial पर हूं, सभी डिफ़ॉल्ट सेटिंग्स के साथ byobu/ का उपयोग करते हुए tmux, यह काम किया, Alt + w ने नहीं किया।
एंड्रिया ज़ोंका

1
यह tmux 2.0 के साथ OS X Yosemite पर काम नहीं करता है, न ही alt + w करता है, न ही esc + w :(
weberc2

Zoc टर्मिनल का उपयोग करके विंडोज पर भी मेरे लिए काम करता है।
jdhao

15

यदि आप macOS पर vim और tmux का उपयोग कर रहे हैं (macOS 10.12.2 पर परीक्षण किया गया, tmux 2.3):

(मान लें कि tmux का उपसर्ग कुंजी संयोजन है prefix। उपसर्ग ctrl+ bचूक में + है।)

  • कॉपी करें:
    1. कॉपी मोड दर्ज करने के लिए prefix+ दबाएँ [
    2. पाठ चयन के प्रारंभ / अंत पर जाने के लिए तीर कुंजियों का उपयोग करें।
    3. प्रेस ctrl+ space(यदि आपने उपसर्ग ctrl+ के spaceरूप में सेट किया है, तो इसके बजाय ctrl+ space+ दबाएं space)
    4. चयन के दूसरे पक्ष में जाने के लिए तीर कुंजियों का उपयोग करें।
    5. ctrl+ दबाएं w
  • पेस्ट करें:
    1. इन्सर्ट मोड में prefix+ दबाएं ]

8

मैं ZOC टर्मिनल ssh क्लाइंट का उपयोग करके विंडोज मशीन पर अपने CentOS सर्वर से जुड़ रहा हूं । यहाँ मेरे लिए क्या काम करता है:

  • कॉपी मोड दर्ज करें: <prefix>+[
  • प्रतिलिपि प्रारंभ करें: <Space>
  • पाठ कॉपी करें: <Enter>
  • पेस्ट टेक्स्ट: <prefix>+]

2

आप सामान्य y और p के बजाय "* y और" * p के साथ सिस्टम क्लिप बोर्ड का उपयोग कर सकते हैं।


1
आपके द्वारा उपयोग किए जाने वाले सिस्टम क्लिपबोर्ड का उपयोग करने के लिए "+2yy- X11 क्लिपबोर्ड पर दो पंक्तियों की प्रतिलिपि बनाएँ "+dd- कट लाइन से X11 क्लिपबोर्ड तक "+p- पेस्ट X11 क्लिपबोर्ड
Patryk

क्या मुझे इन आदेशों का उपयोग करने से पहले कुछ भी लिखने की आवश्यकता है?
थॉमस अहले

@ThomasAhle, नहीं .. इसके शाब्दिक रूप से दोहरे उद्धरण ("), प्लस (+) के बाद 2ys (y) है। सुनिश्चित करें कि आप सामान्य मोड में हैं। यदि आप सामान्य मोड में हैं, तो आपको उपयोग h,j,k,lकरने में सक्षम होना चाहिए। चाल। मैंने कभी-कभी अपने ubuntu VM पर भी देखा है, "+" रजिस्टर गायब हो जाता है, अज्ञात कारण के लिए। यह सत्यापित करने के लिए कि आपके पास +रजिस्टर है, आप टाइप कर सकते हैं :regऔर जांच सकते हैं कि "+पहले कॉलम में स्ट्रिंग है या नहीं ।
Alpha_989

हाँ, यह बात है, यह उत्तर है। अन्य लोगों की तुलना में बहुत आसान है (tmux कॉपी / पेस्ट का उपयोग करके) और यह लाइन नंबर को गड़बड़ नहीं करता है। क्या यह किसी भी मुद्दे का कारण होगा यदि आपने मानक yऔर, pको "+yऔर "+p?
राणी

1

यदि आपके पास vimखुला है, तो पाठ कॉपी करने के लिए विम कॉपी पेस्ट का उपयोग करना बेहतर है।

Tmux copy पेस्ट काम करेगा, हालाँकि इसके कई नुकसान हैं।

सबसे पहले, टेक्स्ट की कई लाइनों को कॉपी करते समय, आपको कई लाइनों का चयन करना होगा। Tmux कॉपी पेस्ट आमतौर पर समझ में नहीं आता है कि vimलाइन नंबर हैं या vim गटर (जैसे रिश्तेदार नंबर / निरपेक्ष) के रूप में चिह्नों हैं। नतीजतन, यह उन लोगों की भी नकल करेगा।

दूसरी बात, मैंने पाया है कि यदि पाठ में कुछ विशेष भाषा है, और आप सीधे vm को tmux का उपयोग करके कॉपी कॉपी करने का प्रयास करते हैं, तो यह प्रारूपण को गड़बड़ कर देगा। इसके इस्तेमाल से बचा जा सकता है set paste!। हालांकि, इसके लिए बहुत अधिक काम करने की आवश्यकता है।

"+yकॉपी करने और "+pचिपकाने के लिए उपयोग करें

Vimमूल रूप से "+yया तो का उपयोग कर vim बफर और सिस्टम क्लिपबोर्ड के बीच पेस्ट कॉपी करने के लिए एक विधि प्रदान करता है "*y। तब का उपयोग "+pकर चिपकाने या "*p। यह गटर या अन्य यादृच्छिक चिह्नों के सापेक्ष संख्याओं की नकल करेगा जो विम के लिए प्रासंगिक नहीं हैं


0

Vm उपयोग के लिए विकल्पों में से कुछ tmux शॉर्टकट अनुक्रम थोड़ा लंबा है और मुझे इसे याद रखना मुश्किल है

जवाब की तरह ऊपर कहा था कि आप उपयोग कर सकते हैं "+yऔर "*yकॉपी और उसके बाद के लिए "+pऔर "*pक्रमशः पेस्ट करने के लिए। यदि आप डिफ़ॉल्ट रूप से क्लिपबोर्ड का उपयोग करना चाहते हैं, तो आप y/pसीधे सीधे उपयोग कर सकते हैं ।

set clipboard=unamed "sets the default copy register to be *
set clipboard=unamedplus "sets the default copy register to be +

क्लिपबोर्ड कमांड के लिए स्रोत: https://vi.stackexchange.com/questions/84/how-can-i-copy-text-to-the-system-clipboard-from-vim

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