2011-10-18 10 views
277

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

% tmux -V 
tmux 1.5 
+5

मुझे पता है कि बिना सभी सत्रों पुनः बनाने के लिए कैसे करना चाहते हैं उनमें से किसी को अलग करना। –

+3

हर कोई बस अलग करता है ... क्या आपको कोई रास्ता मिल गया? –

उत्तर

405

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 सेट करें, और किसी भी अन्य सत्र को स्विच करें जिसमें उस विंडो को किसी अन्य विंडो में सक्रिय किया गया हो), लेकिन यह कठिन है सामान्य मामले में स्क्रिप्ट के लिए (और "बाहर निकलने के लिए अलग" क्योंकि आप खिड़की को अनलिंक करना चाहते हैं या सत्र से अलग होने के बजाय सत्र को मारना चाहते हैं)।

+0

ध्यान दें कि आप '$ के साथ वर्तमान सत्र (tmux प्रदर्शन-संदेश -p '#S')' प्राप्त कर सकते हैं, देखें: http://superuser.com/questions/410017/how-do-i-know-current- tmux-सत्र-नाम-दर-चल-tmux कमान। – GManNickG

+0

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

+0

"tmux detach -a" मेरे लिए काम किया; "tmux संलग्न-डी" नहीं था। – mahemoff

143

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

tmux detach -a 

-a वर्तमान एक

आप इसे उर्फ ​​सकता है, सिवाय इस सत्र में अन्य सभी ग्राहक के लिए है में अपने [बैश | zsh] आर सी

alias takeover="tmux detach -a" 

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

+8

बहुत बहुत धन्यवाद! काम किया। आप एक सक्रिय tmux सत्र में यह कर रहे हैं, तो सिर्फ Ctrl + B (या जो भी अपने कस्टम tmux आदेश) उसके बाद ': – Iacchus

268

तुम हमेशा दबा सकते हैं CTRL - बी + शिफ्ट - डी जो ग्राहक आप सत्र से अलग करना चाहते हैं का चयन करें।

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

+31

सरल जवाब -a' अलग। भविष्य में थोड़ा आगे से –

+8

+1 एक अद्भुत उत्तर के लिए +1 को सूची में ले जाना चाहिए। – merlin2011

+5

यह स्वीकार्य उत्तर होना चाहिए था। – Chaos

-5
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 

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

+5

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

1

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

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

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

1

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

इसे ठीक करने के लिए मैं इस सवाल का जवाब here (मैं xterm का उपयोग नहीं किया गया था) का पालन किया।

कौन सा बस ने कहा:

  1. tmux सत्र से अलग
  2. भागो resize linux कमांड
  3. पुनः अनुलग्न सत्र tmux को
संबंधित मुद्दे