2011-12-12 17 views
13

मैं तीन खिड़कियां है:जब कोई हटा दिया जाता है तो मैं tmux reorder विंडो कैसे बना सकता हूं?

1:zsh 2:vim* 3:htop 

जब मैं वर्तमान विंडो (# 2), मैं इन खिड़कियों को छोड़ दिया है हटा दें:

1:zsh 3:htop 

मैं इसे कैसे कर सकते हैं, जिससे कि वह उन्हें renumbers

1:zsh 2:htop 

यदि मुझे सही याद है, तो यह जीएनयू स्क्रीन का डिफ़ॉल्ट व्यवहार है। मुझे पता है कि मैं हमेशा :swap-window कर सकता हूं, लेकिन मैं जानना चाहता हूं कि यह स्वचालित रूप से संभव है या नहीं।

+0

यह http://superuser.com या http://unix.stackexchange.com के लिए एक बेहतर सवाल होगा। – ziesemer

+2

इस तरह की सुविधा के लिए पैच [* tmux-users * मेलिंग सूची पर तैरते हैं] (http://search.gmane.org/?query=renumber&group=gmane.comp.terminal-emulators.tmux.user), लेकिन उन्हें मुख्य कोड में शामिल नहीं किया गया है। "Tmux renumber windows" की एक त्वरित खोज ने एक [स्क्रिप्ट जो इस तरह की मरम्मत करता है] (http://brainscraps.wikidot.com/tmux-renum) को बदल दिया है, हालांकि आपको मैन्युअल रूप से इसे खोलना होगा (एक खोल से या एक के माध्यम से) 'रन-शैल' के माध्यम से बाध्यकारी)। –

+4

हाल ही में जारी * tmux * 1.7 में 'renumber-windows' सत्र विकल्प (विंडो संख्याओं को अंतहीन रखता है), और' move-window -r' कमांड (विंडोज़ की एक बार की मरम्मत) करता है। यदि आप सभी सत्रों के लिए "अंतराल" संख्या चाहते हैं, तो आप अपनी कॉन्फ़िगरेशन फ़ाइल में 'set -g renumber-windows on' डाल सकते हैं (एक बार आपके पास * tmux * 1.7 है)। –

उत्तर

15

के लिए इसे और अधिक बस करते हैं।

आप संस्करण 1.7 नीचे tmux का उपयोग कर रहे हैं, तो ~/.tmux.conf को अगली पंक्ति संलग्न:

bind-key C-s run "for i in $(tmux lsw|awk -F: '{print $1}'); do tmux movew -s \$i; done" 

आप सभी खिड़कियां सॉर्ट सकता है, PREFIX-KEY, तो Ctrl +रों टाइप करके।

वरना

, यदि आप tmux ऊपर संस्करण 1.7 या उपयोग कर रहे हैं, के रूप में पहले से ही सब लोग कहते हैं, ~/.tmux.conf को अगली पंक्ति संलग्न:

set-option -g renumber-windows on 
+0

यहां बाइंड-कुंजी विकल्प tmux 1.6 के साथ ठीक से काम नहीं करता है।पहली खिड़की हमेशा अंत तक पुनर्निर्मित हो जाती है और शेष नीचे चले जाते हैं, इसलिए खिड़कियां एक गोलाकार सूची की तरह व्यवहार करती हैं, हर बार घूमती रहती हैं और संभावित रूप से उन्हें पूरी तरह से पुन: व्यवस्थित करती हैं। क्रिस का उत्तर नीचे अधिक विश्वसनीय है। – papercrane

1

नीचे bash स्क्रिप्ट (tmux एपीआई में परिवर्तन को प्रतिबिंबित करने के लिए [1] का अद्यतन संस्करण) tmux सत्रों को रीडर करता है। मैं इसे एक बैश फ़ंक्शन के रूप में जोड़ने का सुझाव देता हूं जिसे आप किसी भी खोल से कॉल कर सकते हैं।

# re-number tmux sessions                                                     
for session in $(tmux ls | awk -F: '{print $1}') ;do                                              
    inum=0                                                         
    for window in $(tmux lsw -t 0 | awk -F: '/^[0-9*]/ {print $1}') ;do                                         
     if [ ${window} -gt ${inum} ] ;then                                                 
      echo "${session}:${window} -> ${session}:${inum}"                                            
      tmux movew -d -s ${session}:${window} -t ${session}:${inum}                                         
     fi                                                         
     inum=$((${inum}+1))                                                    
    done                                                         
done 

[1] http://brainscraps.wikidot.com/tmux-renum

3

यह अब सी में लागू और OpenBSD पर सीवीएस tmux को प्रस्तुत किया गया है। जल्द ही Sourceforge पोर्टेबल रिलीज मारा जाएगा।

https://github.com/ThomasAdam/tmux-obsd/commit/c42e9b038dcdd36944e76954258a484387bd988f

+1

थॉमसएडम का लिंक अब मर चुका है, लेकिन यह सुविधा वर्तमान tmux (1.9a) में 'move-window -r' कमांड के रूप में मौजूद है। विवरण के लिए 'आदमी tmux' देखें। –

+0

कोई टिप्पणी होनी चाहिए – bschlueter

10

tmux के बाद से 1.7, तो आप ऐसा करने के लिए सिर्फ एक आदेश लिख सकते हैं:

tmux movew -r 
संबंधित मुद्दे

 संबंधित मुद्दे