बैश और X11 के बीच क्लिपबोर्ड साझा करें


12

में इस सूत्र शीर्ष जवाब से पता चलता है कि कैसे, पाठ पहले किसी GNOME टर्मिनल पर माउस के साथ चुना गया है कॉपी करने के लिए X11 में क्लिपबोर्ड।

मेरा प्रश्न है: कहो कि मैं टर्मिनल से टेक्स्ट का एक टुकड़ा बैश सेट-मार्क और कॉपी कीबोर्ड शॉर्टकट (यानी set-mark+ M-w) का उपयोग करके कॉपी करता हूं । क्या इस क्लिपबोर्ड को X11 के साथ साझा करना संभव है?

संपादित करें : मूल प्रश्न में, मैंने गनोम के साथ क्लिपबोर्ड साझा करने के बारे में बात की थी, लेकिन जैसा कि नीचे गिले बताते हैं, गनोम के पास विशेष रूप से क्लिपबोर्ड नहीं है (यह एक्स के लिए सामान्य है), इसलिए मैंने प्रश्न को अपडेट किया है।


गनोम-टर्मिनल में, आप सिस्टम क्लिपबोर्ड पर कॉपी और पेस्ट करने के लिए Ctrl + Shift + C और Ctrl + Shift + V टाइप कर सकते हैं।
रेयान

2
इस पोस्ट को देखें stackoverflow.com/questions/994563/… लेकिन यह मेरे लिए काम नहीं कर रहा है।
महान q

जवाबों:


10

बैश का क्लिपबोर्ड बैश करने के लिए आंतरिक है, बैश एक्स सर्वर से कनेक्ट नहीं होता है।

आप जो कुछ भी कर सकते हैं, वह M-wbash के आंतरिक क्लिपबोर्ड के अलावा चयन को X क्लिपबोर्ड पर कॉपी करने का अर्थ बदल सकता है । हालांकि बैश का एकीकरण बहुत ढीला है, और मुझे नहीं लगता कि बैश कोड से क्षेत्र की जानकारी या क्लिपबोर्ड तक पहुंचने का कोई तरीका है। आप संपूर्ण क्लिप को X क्लिपबोर्ड पर कॉपी करने के लिए एक महत्वपूर्ण बाइंडिंग बना सकते हैं। binding

if [[ -n $DISPLAY ]]; then
  copy_line_to_x_clipboard () {
    printf %s "$READLINE_LINE" | xsel -ib
  }
  bind -x '"\eW": copy_line_to_x_clipboard'
fi

यदि आप शेल में फैंसी चीजें करना चाहते हैं, तो zsh पर स्विच करें, जो (अन्य लाभों के बीच) लाइन संपादक और स्क्रिप्टिंग भाषा के बीच बेहतर एकीकरण है।

if [[ -n $DISPLAY ]]; then
  x-copy-region-as-kill () {
    zle copy-region-as-kill
    print -rn -- "$CUTBUFFER" | xsel -ib
  }
  x-kill-region () {
    zle kill-region
    print -rn -- "$CUTBUFFER" | xsel -ib
  }
  zle -N x-copy-region-as-kill
  zle -N x-kill-region
  bindkey '\C-w' x-kill-region
  bindkey '\ew' x-copy-region-as-kill
fi

¹ Gnome विशेष रूप से एक क्लिपबोर्ड नहीं है, यह एक्स के लिए सामान्य है
² कुंजी के साथ बंधे हुए दृश्यों: बैश 4.1 के रूप में, कुंजी पार्स कोड में एक बग है bind -xलंबे समय तक की तुलना में अधिक दो अक्षर नहीं हो सकता। मुझे लगता है कि बैश 4.2 लंबे उपसर्गों के कुछ मामलों को ठीक करता है, लेकिन उन सभी को नहीं; मैंने विवरणों पर शोध नहीं किया है।


विचार @ धन्यवाद के लिए धन्यवाद! मुझे लगता है कि यह मेरे लिए सीखने और स्विच करने का समय है zsh
अमीलियो वाज़क्वेज़-रीना

आखिरकार! बहुत बहुत धन्यवाद! यह copy_line_to_x_clipboardवही है जो मैं बहुत लंबे समय से लापता था: शिफ्ट + इंसर्ट के बराबर कॉपी। मैं ctrl-x ( bind -x '"\C-x") में बदल गया क्योंकि Escमेरे स्वाद के लिए बहुत दूर है (और Cc सबसे अधिक संभव विकल्प होगा)।
पर्बेल

टर्मिनलों में आम तौर पर एक मेटा कुंजी होती है, जो डिफ़ॉल्ट रूप से पूरी कुंजी के लिए बाध्य होती है। किसी वर्ण को टाइप करते हुए उसे नीचे रखना escउस वर्ण द्वारा अनुदित होता है , इसलिए आप इसे इस प्रकार लिख सकते हैं alt-w
DoMiNeLa10

7

@ गिल्स ने पहले ही एक शानदार जवाब दिया। मैं इसके अस्तित्व का उल्लेख करना चाहूंगा xclip, जो एक्स क्लिपबोर्ड में टर्मिनल आउटपुट को कॉपी करने का एक बहुत ही उपयोगी तरीका है, बस इसमें कुछ भी पाइप करके:

$ cat /etc/passwd | xclip

1
बस एक नोट जो xclipडिफ़ॉल्ट रूप से प्राथमिक बफर में कॉपी करता है। क्लिपबोर्ड का उपयोग करने के लिए, का उपयोग करें xclip -selection clipboard
स्पार्कहॉक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.