क्या छोटे मॉनिटर को बड़ा करने पर स्विच करने के लिए tmux विंडो रिडर्व करने का कोई तरीका है?


399

मान लें कि आप किसी दूरस्थ सर्वर पर ssh से अधिक टर्मिनल से कनेक्ट कर रहे हैं। जब आप छोटे से बड़े रिज़ॉल्यूशन मॉनिटर के साथ "tmux देते हैं" तो आपने पहले जो tmux शुरू किया था, वह कंसोल के चारों ओर डॉट्स खींचता है। यह नई विंडो आकार में फिट नहीं है। क्या खिड़की को फिर से साफ करने और साफ करने का कोई तरीका है? CTRL+ Lया CTRL- B+ Rमदद नहीं करता है। मुझे आदमी पर कोई उचित आदेश नहीं मिला।

% tmux -V
tmux 1.5

7
मुझे पता है कि उनमें से किसी को अलग किए बिना सभी सत्रों को कैसे फिर से तैयार करना है।
पीजे ब्रुनेट

3
हर कोई बस अलग हो जाता है ... क्या आपको कोई रास्ता मिला?
पाटोशी at ト

त्वरित संदर्भ के लिए: learnbatta.com/blog/tmux-working-with-split-terminal-95
anjaneyulubatta505

हाँ, मैं अभी भी सवाल का जवाब जानना पसंद करूंगा: "क्या खिड़की को फिर से साफ करने और साफ करने का कोई तरीका है?"
जयादेल

जवाबों:


579

tmux एक विंडो के आयामों को उन सभी सत्रों में सबसे छोटे आयामों तक सीमित करता है जिनमें खिड़की जुड़ी होती है। यदि ऐसा नहीं किया तो सभी संलग्न ग्राहकों के लिए पूरे विंडो क्षेत्र को प्रदर्शित करने का कोई समझदार तरीका नहीं होगा।

सबसे आसान काम यह है कि जब आप संलग्न हों तो सत्रों से किसी अन्य ग्राहक को अलग कर लें:

tmux attach -d

वैकल्पिक रूप से, आप सत्र को संलग्न करने से पहले किसी भी अन्य ग्राहकों को एक अलग सत्र में स्थानांतरित कर सकते हैं:

takeover() {
    # create a temporary session that displays the "how to go back" message
    tmp='takeover temp session'
    if ! tmux has-session -t "$tmp"; then
        tmux new-session -d -s "$tmp"
        tmux set-option -t "$tmp" set-remain-on-exit on
        tmux new-window -kt "$tmp":0 \
            'echo "Use Prefix + L (i.e. ^B L) to return to session."'
    fi

    # switch any clients attached to the target session to the temp session
    session="$1"
    for client in $(tmux list-clients -t "$session" | cut -f 1 -d :); do
        tmux switch-client -c "$client" -t "$tmp"
    done

    # attach to the target session
    tmux attach -t "$session"
}
takeover 'original session' # or the session number if you do not name sessions

यदि एक छोटा ग्राहक सत्र में स्विच करता है तो स्क्रीन फिर से सिकुड़ जाएगी।

एक भिन्नता भी है जहाँ आप केवल विंडो को "टेक ओवर" करते हैं (विंडो को नए सत्र में लिंक करते हैं, सेट करते हैं aggressive-resizeऔर किसी भी अन्य सत्र को स्विच करते हैं, जिसमें वह विंडो किसी अन्य विंडो में सक्रिय होती है), लेकिन सामान्य रूप से स्क्रिप्ट के लिए कठिन है मामला (और "बाहर निकलने के लिए अलग" चूंकि आप विंडो को अनलिंक करना चाहते हैं या सत्र से बस हटाने के बजाय सत्र को मार सकते हैं)।


ध्यान दें कि आप वर्तमान सत्र को $(tmux display-message -p '#S')देख सकते हैं , देखें: superuser.com/questions/410017/…
GManNickG

3
इस जवाब को विस्तार और ज्ञान के आधार के लिए सहारा मिलता है। लेकिन Ctrl-b + Dउपयोग में आसानी (और याद रखना) के लिए शी बी का जवाब देखें ।
fbicknel

"tmux detach -a" ने मेरे लिए काम किया; "tmux संलग्न -d" नहीं किया।
Mahemoff

(1) नए tmux त्रुटियों पर set-option... set-remain-on-exit onTmux # 787 देखें । अब, उपयोग करें tmux set-hook -t "$tmp" window-linked 'set remain-on-exit on:।
user1902689

1
(2) नए tmux पर, किसी new-windowचीज़ के अंतिम तर्क का उपयोग करना 'echo "Use Prefix + L (i.e. ^B L) to return to session.'; while(true); do read; done"होगा या आप संदेश नहीं देखेंगे। (कुछ परिस्थितियों में, यदि आप इसे स्क्रॉल करते हैं, या यदि टर्मिनल लंबा है, तो आप इसे देखेंगे।) यदि आप इसका उपयोग करते हैं, तो आप शायद मेरी टिप्पणी के बिना बेहतर हैं "(1)" या कुछ भी सेटिंग remain-on-exit
user1902689

462

आप किस सत्र से अलग करना चाहते हैं, यह चुनने के लिए आप हमेशा CTRL- B+ SHIFT- प्रेस कर सकते हैं D

tmux सभी सत्रों को उनके वर्तमान आयाम के साथ सूचीबद्ध करेगा। तब आप बस छोटे आकार के सभी सत्रों से अलग हो जाते हैं।


6
स्पष्टीकरण। यह पूँजी डी। स्माल 'डी' क्लाइंट को अलग करती है।
रघुराम मूर्ति P

2
CTRL-Bअगर वह आपका उपसर्ग है। CTRL-Aजब से मैंने स्क्रीन से स्विच किया है मेरा मेरा है ।
ब्लास्काविच

1
वास्तव में आपको एक ही सत्र समूह से सभी छोटे आकार के सत्रों को अलग करने की आवश्यकता है। हालाँकि CTRL-B + SHIFT-D यह नहीं दिखाता है कि प्रत्येक सत्र किस समूह का है। मैं tmux list-sessionsसत्र नाम, आकार और समूह जानकारी दिखाता हूं , फिर tmux kill-session -t <session_name>उसी समूह के सत्रों को चलाना चाहता हूं ।
झीचांग यू

180

Tmux के हाल के संस्करणों पर एक सरल समाधान (1.9 पर परीक्षण किया गया) अब आप कर सकते हैं:

tmux detach -a

-a वर्तमान सत्र को छोड़कर इस सत्र के अन्य सभी क्लाइंट के लिए है

आप इसे अपने में बदल सकते हैं। [bash | zsh] rc

alias takeover="tmux detach -a"

वर्कफ़्लो: आप अपने सत्र को सामान्य रूप से कनेक्ट कर सकते हैं, और यदि आप किसी अन्य सत्र से परेशान हैं, जो आपके tmux विंडो के आकार को कम कर सकता है, तो आप बस कॉल कर सकते हैं takeover


13
बहुत धन्यवाद! काम किया। यदि आप इसे एक सक्रिय tmux सत्र में कर रहे हैं, तो बस CTRL + B दबाएं (या जो भी आपका कस्टम tmux कमांड है):detach -a
Iacchus

या सिर्फ tmux detach -aTmux के अंदर शेल कमांड लाइन पर अमल करें।
13

4

अन्य उत्तरों ने मेरी मदद नहीं की क्योंकि मेरे पास केवल क्लाइंट संलग्न था (पिछले एक जिसने सत्र शुरू किया था पहले से ही अलग हो गया था)।

इसे ठीक करने के लिए मैंने यहां उत्तर का पालन ​​किया (मैं xterm का उपयोग नहीं कर रहा था)।

जो बस ने कहा:

  1. Tmux सत्र से अलग करें
  2. resizeलिनक्स कमांड चलाएं
  3. Reattach से tmux session तक

3

मैं बस इस समस्या में भाग गया और एक अलग स्थिति में ठोकर खाई। हालांकि यह शायद सिर्फ एक गेंडा है, मैंने सोचा कि मैं इसे बाहर रखना चाहता हूं।

मेरे पास एक सत्र था जो छोटा था, और मैंने देखा कि फ़ॉन्ट आकार अलग थे: छोटे सत्र में छोटे फ़ॉन्ट थे। जाहिरा तौर पर, मैंने किसी कारण से विंडो फ़ॉन्ट आकार बदल दिया था।

तो ओएस एक्स में, मैंने बस Cmd-+छोटे आकार के सत्र पर किया, और यह वापस जगह में तड़क गया।


यह macOS टर्मिनल में tmux स्टेटस बार का अजीब नियत स्थान है। जब मेरे पास टर्मिनल टैब खुला होता है, तो यह tmux स्टेटस बार की स्थिति को गड़बड़ कर देता है। इसके माध्यम से ज़ूम के साथ खेलना cmd-+या -इसे ठीक करना।
पॉल

0
ps ax | grep tmux
17685 pts/22   S+     0:00 tmux a -t 13g2
17920 pts/11   S+     0:00 tmux a -t 13g2
18065 pts/19   S+     0:00 grep tmux

दूसरे को मार डालो।


8
शीर्षक प्रश्न के लिए एक मान्य उत्तर की तरह लगता है, बेहतर उत्तर होने के बावजूद। मुझे समझ में नहीं आता कि यह गुमनामी में क्यों बदल गया।
जोएल

yessss, यह एकमात्र उत्तर है जो मेरे लिए काम करता है
यासिर हंतूस


0

मैं उपयोग करता हूं Ctrl- b+ qजो इसे प्रत्येक फलक के लिए फ्लैश नंबर बनाता है, रास्ते में उन्हें फिर से तैयार करता है।

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