यह मेरे बजाय लंबा जवाब है कि एक दूरस्थ (ssh) tuxux से बफर कॉपी करने के लिए xclip का उपयोग करने के साथ दो प्रमुख समस्याओं को ठीक करना चाहिए:
1. गैरकानूनी xclip
मेरे लिए @ Grauwolf के जवाब के साथ xclip
काम नहीं किया (पूरी तरह से लापरवाह फलक tmux renders)। मुझे पता चला कि आर्क विकि के Tmux पृष्ठ में क्यों :
उस उद्देश्य के लिए भी xclip का उपयोग किया जा सकता है, xsel के विपरीत यह कच्चे बिटस्ट्रीम को प्रिंट करने में बेहतर काम करता है जो वर्तमान लोकेल में फिट नहीं होता है। फिर भी, यह xclip के बजाय xsel का उपयोग करने के लिए neater है, क्योंकि tmux के बफर से पढ़े जाने के बाद xl STDOUT को बंद नहीं करता है। इस प्रकार, tmux को पता नहीं है कि प्रतिलिपि कार्य पूरा हो गया है, और xclip की समाप्ति की प्रतीक्षा करना जारी रखता है, जिससे tmux अप्रतिसादी हो जाता है। एक वर्कअराउंड STDOUT xclip को / dev / null में रीडायरेक्ट करना है
तो बंधन होना चाहिए:
bind-key C-y run "tmux save-buffer - | xclip -i -sel clip > /dev/null"
अब, यदि आपका tmux सत्र स्थानीय है तो यह काम करेगा।
2. एक्स से कनेक्ट करने में असमर्थ एक्लिप्स
यदि आप ssh-x पर tmux का उपयोग कर रहे हैं , तो बड़ी संभावना है कि यह सीधे काम नहीं करेगा ।
ऐसा इसलिए है क्योंकि शेल चर $DISPLAY
को ठीक से सेट करने की आवश्यकता है।
पूरा समाधान
तो मेरे लिए, पूर्ण कार्य समाधान निम्नलिखित लाइनों को अपने में रखना है ~/.tmux.conf
:
set-option -g update-environment "DISPLAY"
bind-key C-y run "export DISPLAY=`tmux show-env | sed -n 's/^DISPLAY=//p'`; tmux save-buffer - | xclip -i -selection clipboard >/dev/null"
# Or more concise:
bind-key C-y run "tmux save-buffer - | xclip -i -selection clipboard -d `tmux show-env | sed -n 's/^DISPLAY=//p'` >/dev/null
प्राथमिक से चिपकाने के लिए:
bind-key C-p run "xclip -d `tmux show-env | sed -n s/^DISPLAY=//p` -o | tmux load-buffer - && tmux paste-buffer"
मुझे पूरी तरह से समझ नहीं आया कि $DISPLAY
सोर्सिंग करते समय सही तरीके से सेट क्यों नहीं किया गया है .tmux.conf
, इसलिए यही कारण है कि मुझे इसे tmux show-env
और साथ निकालना है sed
।
यदि आपके पास tmux> = 1.8 है, तो आप इस कमांड को इसके साथ अनुकूलित कर सकते हैं copy-pipe
:
bind-key -t vi-copy y copy-pipe 'xclip -in -selection clipboard -d `tmux show-env | sed -n s/^DISPLAY=//p` >/dev/null'