Bash बनाम Gnu स्क्रीन: Ctrl-A को Ctrl-Shift-A से बदलें


44

मैं GNU स्क्रीन का नया उपयोगकर्ता हूं। मैं बहुत लंबे समय से बैश का उपयोग कर रहा हूं, और मैं जीएनयू स्क्रीन को आजमाना चाहता हूं।

जैसा कि आप जानते हैं, GNU स्क्रीन कमांड कैरेक्टर के रूप में 'Ca' (Control-A) का उपयोग करता है। परेशानी यह है, यह बैश (और जीएनयू रीडलाइन) में लाइन एडिटिंग फीचर के साथ हस्तक्षेप करता है, क्योंकि बैश में कंट्रोल-ए लाइन की शुरुआत में स्थानांतरित हो जाएगा। "

मुझे पता है कि मैं कमांड कैरेक्टर को किसी अन्य मुख्य अनुक्रम में सेट कर सकता हूं , जैसे "^ Q" या "` `" (बैकटिक), लेकिन मुझे एक और महत्वपूर्ण अनुक्रम खोजने में परेशानी होती है जो पहले से उपयोग में नहीं है (^ क्यू का उपयोग टर्मिनल द्वारा किया जाता है , backtick का उपयोग शेल स्क्रिप्ट लिखते समय किया जाता है)। ऐसा प्रतीत होता है कि कमांड कैरेक्टर लंबाई में केवल एक या दो अक्षर हो सकते हैं। क्या मैं "कंट्रोल-शिफ्ट-ए" जैसा कुछ बनने के लिए जीएनयू स्क्रीन कंट्रोल कैरेक्टर सेट कर सकता हूं?

(मैं अभी तक एक हाइपरलिंक का उपयोग नहीं कर सकता, इसलिए मैं बैश प्रलेखन से लिंक नहीं कर सकता)


5
screenअन्य प्रणालियों पर उपयोग करने के दौरान अव्यवस्थित नहीं होने के लिए , आप डिफ़ॉल्ट कीबाइंडिंग के साथ छड़ी करने के लिए, या कम से कम उन्हें पहले सीखने के लिए सबसे अच्छा हो सकता है। ^A aडिफ़ॉल्ट रूप से, सामान्य ^Aकुंजी कॉम्बो भेजेंगे । यदि आप उस कॉम्बो का भरपूर उपयोग करते हैं तो यह थोड़ा असुविधाजनक है; मैं आमतौर पर HOMEइस वजह से कुंजी का उपयोग करता हूं । लेकिन तब वह हमेशा काम नहीं करता है।
जूल

Ctrl-space के लिए यहां कोई प्यार नहीं है। बहुत अच्छा काम करता है।
वाइल्डकार्ड

जवाबों:


18

Control- Shift- के साथ समस्या यह Aहै कि ज्यादातर टर्मिनल इम्यूलेशन प्रोग्राम इसके द्वारा भेजे गए एक से एक अलग कोड नहीं भेजते हैं Control- Aइसलिए, अंतर बताने के लिए स्क्रीन के लिए कोई रास्ता नहीं होगा ।

यदि आप stty -ixontty पर "सॉफ्टवेयर फ्लो कंट्रोल" को निष्क्रिय करते हैं तो आप Cq का उपयोग करने में सक्षम हो सकते हैं । मैं आमतौर पर ऐसा करता हूं इसलिए मैं कमांड लाइन पर खोज करने के लिए Cs का उपयोग कर सकता हूं।

आप C- ^ पर विचार कर सकते हैं, क्योंकि यह आमतौर पर अनबाउंड लगता है। यह है Control- Shift- 6अमेरिका कीबोर्ड लेआउट पर, लेकिन यह अन्य लेआउट पर टाइप करने के लिए मुश्किल हो सकता है।

अधिकांश लोग SIGQUIT भेजने के लिए कभी भी tty नियंत्रण वर्ण C- \ का उपयोग नहीं करते हैं। इसका उपयोग करने के लिए, इसके साथ tty कार्यक्षमता को अक्षम करें stty quit undefऔर इसे अपनी उपसर्ग कुंजी के रूप में बांधें। हालांकि यह थोड़ा जोखिम भरा है, क्योंकि अगर आप C- \ को एक tty पर मारते हैं , जहां स्टिक के साथ छोड़ दिया गया कुंजी अक्षम नहीं किया गया है , तो आप स्क्रीन को सक्रिय करने के बजाय अग्रभूमि प्रक्रिया को मार सकते हैं

मैंने थोड़ी देर पहले tmux पर स्विच किया । इसका डिफ़ॉल्ट Cb है क्योंकि यह स्क्रीन के नीचे विकसित किया गया था और स्क्रीन के डिफ़ॉल्ट के साथ हस्तक्षेप नहीं किया था । मैंने पाया है कि सीबी मेरे लिए काफी अच्छी तरह से काम करता है (मैं आमतौर पर शेल कमांड लाइन पर एकल वर्ण आंदोलन के लिए तीर कुंजियों का उपयोग करता हूं - हालांकि मैं एमबी और एमएफ का उपयोग शब्दों द्वारा स्थानांतरित करने के लिए करता हूं)।

संयोग से, tmux का लेखक अपने प्राथमिक सत्रों में Ca का उपयोग करता है और हमेशा Ca को दो बार टाइप करता है (चाहे tmux सत्र में हो या नहीं)। यदि आप इस आदत को अपनाने के लिए तैयार हैं, तो यह एक अच्छा समझौता जैसा लगता है, क्योंकि दूसरी Ca अधिकांश Emacs जैसे संपादन संदर्भों में नो-ऑप होना चाहिए। यह काम नहीं करेगा यदि आप अक्सर स्क्रीन के बाहर कार्यक्रमों / संदर्भों का उपयोग करते हैं, जहां दूसरी सीए नहीं-ऑप नहीं होगी।

डिफ़ॉल्ट रूप से, सीए सीए के लिए बाध्य है अन्य आदेश में (सबसे हाल ही में सक्रिय स्क्रीन पर स्विच) स्क्रीन । सीए को वास्तविक सीए भेजना है और सीए ओ स्विच विंडो है, अपने में निम्नलिखित डालें .screenrc:

escape ^A^A
bind o other

2
यह अच्छा लगता है, तब मुझे एहसास हुआ कि GNU स्क्रीन में, सीए को टाइप करने से पहले प्रदर्शित विंडो में दो बार टॉगल होगा। हो सकता है कि मैं "सीए सीए" को कुछ और कर सकता हूं, हालांकि मुझे वास्तव में यकीन नहीं है कि ऐसा कैसे किया जाता है (लगता है कि मुझे इसके लिए 'एस्केप एक्स
स्टीफन लासवर्स्की

1
@ सफ़्फ़ान लासिवस्की: उफ़, मैं भूल गया कि सीए सीए डिफ़ॉल्ट रूप से सीए नहीं भेजता है। थोड़ा सा कॉन्फ़िगरेशन के लिए उत्तर के अंत में जोड़ देखें जो कि सीए को सीए और सीए ओ को पिछली विंडो पर भेज देता है।
क्रिस जॉन्सन

बहुत अच्छा काम करता है! Ca Ca अंतर्निहित शेल में एक वास्तविक Ca भेजेगा और Ca o 'अन्य' विंडो पर जाएगा। बैश में 'कै' भेजने के लिए 'कै' को दो बार मारो। यह स्क्रीन के बाहर नो-ऑप होना चाहिए, और समस्याओं का कारण नहीं होना चाहिए।
स्टीफन लासिवस्की

41

वर्कअराउंड की कोई आवश्यकता नहीं है।
बैश में स्क्रीन का उपयोग करते समय लाइन की शुरुआत में जाने के लिए, उपयोग करें

Control- A(रिलीज और फिर)A


सामान्य तौर पर, यदि कोई स्क्रीन कंट्रोल कैरेक्टर बैश शॉर्टकट से टकराता है, तो बैश शॉर्टकट पहले Controlसे बदल दिया जाएगा Control-A

इसी तरह अन्य पंक्ति संपादन शॉर्टकट के लिए।


धन्यवाद, मैंने अब यह नहीं किया, भले ही यह इतना आसान हो। वास्तव में कुछ भी पुन: कॉन्फ़िगर करने की आवश्यकता नहीं है। मुझे आपका उत्तर सबसे अच्छा लगा।
हेराल्ड

+1 ty - यह अब तक का सबसे अच्छा विकल्प है। मजेदार बात यह है कि इस कोशिश के दौरान, मैंने सीए कै को दुर्घटना से मारा और अभी तक एक और महान कॉम्बो पाया।
kfmfe04

3

मैं स्क्रीन के लिए C- \ का उपयोग करता हूं और मैं इसे पर्याप्त रूप से सुझा नहीं सकता। आप दुर्घटना पर कोई अन्य महत्वपूर्ण परिभाषा मार सकते हैं लेकिन आम तौर पर C- \ नहीं। यही मुझे अच्छा लगता है।


3

मैं इसका उपयोग करता हूं।screenrc

escape ^bb

उदाहरण: आपको अलग करने के लिए ctrl-b d


0

मैं ctrl-_ (जो कि ctrl + 7 द्वारा निर्मित किया जा सकता है और आमतौर पर ctrl + /) स्क्रीन / टक्स के साथ उपयोग करता है।


0

मैं ज्यादातर समय ctrl-z का उपयोग करता हूं, लेकिन कुछ के लिए ctrl-x का भी उपयोग करता हूं। मैं उस 'स्टॉप' इंटरप्ट का उपयोग नहीं करता, लेकिन जब इसकी आवश्यकता होती है, मैं ^ zz टाइप कर सकता हूं। यह मुझे दूरस्थ सर्वर पर माध्यमिक स्क्रीन सत्र शुरू करने की अनुमति देता है जो डिफ़ॉल्ट ctrl-a का उपयोग करते हैं। और अगर मैं तीसरा सत्र शुरू करता हूं (तीसरे सर्वर पर), तो मैं ctrl-x का उपयोग कर सकता हूं। Ctrl-x लॉकस्क्रीन फ़ंक्शन है, जो कई वातावरणों में सामान्य रूप से नहीं है (क्योंकि स्क्रीन अक्सर एक टर्मिनल एमुलेटर के अंदर चल रहा है)।

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