Tmux में vi-copy मोड में सिस्टम क्लिपबोर्ड का उपयोग करें


50

मैं tmux 1.6 चला रहा हूं और मैं इसे वी-स्टाइल कीबाइंडिंग के साथ-साथ इंटरेक्टिव मोड में कॉपी करते समय सिस्टम क्लिपबोर्ड का उपयोग करने के लिए कॉन्फ़िगर करने का प्रयास कर रहा हूं:

set-window-option -g mode-keys vi

bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' "copy-selection && run \"tmux save-buffer | xclip -selection clipboard\""

सीधे शब्दों में, मैं ऐसा करने में सक्षम होना चाहता हूं C+ [और फिर vकॉपी करने के लिए पाठ का चयन शुरू करने के लिए उपयोग करना चाहता हूं , फिर जब yधक्का दिया जाता है , तो चयन को tmux चयन में कॉपी करें और फिर इसका उपयोग करके सिस्टम क्लिपबोर्ड पर निर्यात करें xclip

दुर्भाग्य से, जब मैं ऐसा करने की कोशिश करता हूं, तो मैं निम्नलिखित देखता हूं:

.tmux.conf: 14: unknown command: copy-selection && run "tmux save-buffer | xclip -selection clipboard"

क्या tmux कॉन्फ़िगरेशन में ऐसा करने का कोई तरीका है?

जवाबों:


86

यहां भी इसका उत्तर दिया गया था , लेकिन मुझे यह समझने में थोड़ा समय लगा कि इसका उपयोग कैसे करना है, इसलिए मैं किसी और के लिए समझाऊंगा जो भ्रमित था।

यह मूल रूप से आपके लिए निर्धारित सेटिंग है:

(tmux संस्करणों के लिए <2.5 )

bind -t vi-copy y copy-pipe 'xclip -in -selection clipboard'

(tmux संस्करणों के लिए> = 2.5 )

bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'

फिर Ctrl+b [कॉपी मोड दर्ज करने के लिए हिट करें। उसके बाद हिट Spaceकरने के लिए जो भी vi आंदोलन कुंजियाँ होती हैं उनका चयन करें। फिर, हिटिंग Enter, हिट yऔर चयन के बजाय क्लिपबोर्ड पर कॉपी किया जाएगा।

नोट: यह मानता है कि आप vi कुंजी के साथ tmux की डिफ़ॉल्ट बाइंडिंग का उपयोग कर रहे हैं।

Tmux में अलग-अलग मोड के लिए अलग-अलग की-बाइंडिंग टेबल हैं। तो, कॉपी मोड में कुंजी के bind-key -t vi-copy yलिए कार्रवाई सेट करता yहै। प्रारंभ में, मैं उलझन में था क्योंकि मुझे Enterचयन करने के बाद मारने की आदत थी । Enterवास्तव में copy-selectionकमांड के लिए डिफ़ॉल्ट कुंजी बाइंडिंग है (कॉपी मोड में)। copy-pipeआदेश हमें एक आदेश है, जो इस मामले में करने के लिए चयन पाइप के लिए एक नया कुंजी बाध्य करने के लिए अनुमति देता है xclip

आप चलाकर कॉपी मोड के लिए सभी प्रमुख बाइंडिंग देख सकते हैं list-keys -t vi-copy


बहुत बहुत धन्यवाद, मुझे 1.9a डाउनलोड और संकलन करना पड़ा, लेकिन यह इतना मुश्किल नहीं था और अब यह सिर्फ ™ काम करता है!
नातुल्ली काया

3
यदि यह xclipआपके सिस्टम में वास्तव में स्थापित किए गए दोहरे चेक का काम नहीं करता है (यह उबंटू पर डिफ़ॉल्ट रूप से स्थापित नहीं है, तो आपको sudo apt-get install xclipइसे प्राप्त करने की आवश्यकता है )
एसेरुलम

3
OSX के लिए, के xclipसाथ बदलें pbcopy। विंडोज पर Cygwin के लिए, इसे putclip( cygutils-extraपैकेज से) बदलें ।
SnoringFrog

5
इस ब्लॉग प्रविष्टि से निम्नलिखित बाध्यकारी भी Tmux 2.6 पर बहुत काम करती है और कॉपी करते समय स्क्रीन पर उचित रूप से यादृच्छिक अक्षर डालने का नकारात्मक पक्ष नहीं है:bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
माथियास ब्रौन

1
यह मेरे लिए तब तक काम नहीं कर रहा था जब तक कि मैं इस लाइन को .tmux.conf से नहीं निकालता set -g mouse on:। यह "माउस मोड" सक्षम करने के लिए माना जाता है, लेकिन इसे हटाने के बाद भी मेरा माउस ठीक काम करता है (स्क्रॉल व्हील वर्क्स, माउस चयन कार्य) ...
ndemou

11

बेन डेविस जवाब के लिए अद्यतन संस्करण

tmux 2.4 के साथ संगत

bind -T copy-mode-vi y send -X copy-pipe "xclip -selection c"

4
मुझे लगता है कि यह copy-pipe-and-cancelबजाय के साथ थोड़ा बेहतर काम करता है copy-pipe। यह tmux 2.5 पर है
wreckgar23

6

आप तकनीकी मुद्दों की एक जोड़ी में चल रहे हैं:
"विशेष मोड" बाइंडिंग (जैसे vi-copy) ...

  1. आदेशों के एक अलग सेट का उपयोग करें (अर्थात run-shellउर्फ runउपलब्ध नहीं है), और
  2. कई आदेशों को बांधने की क्षमता नहीं है (जो आमतौर पर अलग किया जा सकता है ;- शेल का &&कमांड विभाजक उपलब्ध नहीं है)।

tmux 1.8 में है copy-pipe, जो हालांकि मदद कर सकता है:

bind-key -t vi-copy y copy-pipe 'xclip -selection clipboard >/dev/null'

( FAQ में सूचीबद्ध इस तरह का एक बंधन है ।)


1
मेरे पास tmux 1.8 है और यह काम नहीं करता है। (संपादित करें) Ugh, मैं textarea इनपुट से नफरत करता हूं जो एंटर पर सबमिट होता है। वैसे भी, मैंने इस कुंजी को जोड़ा, लेकिन जब मैं <उपसर्ग> करता हूं, और हिट [स्पेस] करता है, तो सामग्री क्लिपबोर्ड पर कॉपी नहीं की जाती है।
बेन डेविस

बस यह पता लगा लिया। मुझे समझ नहीं आया कि "vi-copy" कीबाइंडिंग टेबल ने कैसे काम किया।
बेन डेविस

5

Tmux के लिए tmux-yank प्लगइन देखें। https://github.com/tmux-plugins/tmux-yank

यह tmux से सिस्टम क्लिपबोर्ड पर कॉपी / पेस्ट करने का एक स्वचालित तरीका प्रदान करता है। यह OSX / Linux / Cygwin सिस्टम पर काम करता है।


यह मेरे लिए बहुत अच्छा काम किया, लिंक के लिए धन्यवाद!
ब्रायन हेनरी

2

MacOS के लिए आप इस लाइन को जोड़ सकते हैं .tmux.conf

bind -t vi-copy y copy-pipe 'pbcopy'


macOS उपयोगकर्ता, tmux के लिए = = 2.5:bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'pbcopy'
दाई

1

यह वही है जो मेरे लिए tmux 2.2 का उपयोग कर काम कर रहा है और स्थापित xclip। विम शैली की नकल के लिए .tmux.conf को निम्नलिखित जोड़ें

bind Escape copy-mode
bind -t vi-copy 'v' begin-selection
bind -t vi-copy 'y' copy-selection
# Vim style copy to clipboard
bind-key -t vi-copy y copy-pipe "xclip -selection c > /dev/null"
bind-key p run "xclip -o -sel clip | tmux load-buffer - ; tmux paste-buffer"

यहां जब कॉपी-मोड PREFIX v में चयन शुरू होता है और PREFIX y प्रतियां क्लिपबोर्ड पर आ जाती हैं। PREFIX p का उपयोग टर्मिनल में पेस्ट करने के लिए किया जा सकता है।

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