"मैक्सिमाइज़िंग" tmux में एक फलक


211

कभी-कभी यह tmux में एक फलक को अधिकतम करने और फिर इसे पिछले आकार में पुनर्स्थापित करने के लिए बहुत उपयोगी होगा।

मैं मैनुअल पढ़ रहा हूं और मुझे कोई रास्ता नहीं मिल रहा है। जो मैं साथ आया हूं वह यह है कि मैं फलक को "अधिकतम" चौड़ाई में बदलने के लिए एक कुंजी को बांध सकता हूं, और कुछ पूर्वनिर्धारित चौड़ाई में इसे पुनर्स्थापित करने के लिए एक और कुंजी।

निश्चित रूप से इसकी कमियां हैं, इसलिए मैं सोच रहा हूं कि क्या किसी के पास बेहतर विचार है।

जवाबों:


50

एक अन्य विकल्प का उपयोग किया जा सकता है break-pane के बाद join-pane। वहाँ से आदमी पेज :

break-pane [-d] [-t target-pane]
                   (alias: breakp)
             Break target-pane off from its containing window to make it the
             only pane in a new window.  If -d is given, the new window does
             not become the current window.

join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane]
                   (alias: joinp)
             Like split-window, but instead of splitting dst-pane and creating
             a new pane, split it and move src-pane into the space.  This can
             be used to reverse break-pane.

तो आप अपने फलक का चयन कर सकते हैं और कर सकते हैं break-pane और फिर एक बार आपके अधिकतम संस्करण के साथ किए जाने के बाद, आप इसे फिर से जोड़ सकते हैं join-pane - इसे वापस लगाने के लिए कुछ डिफ़ॉल्ट तर्कों की आवश्यकता हो सकती है, या बाद में फिर से व्यवस्थित करें।

ध्यान दें कि जॉइन-पैन tmux 1.3 में प्रतीत होता है, लेकिन 1.1 नहीं। (1.2 के बारे में निश्चित नहीं, क्षमा करें)।

और सिर्फ उसका उल्लेख करना है टर्मिनेटर (एक जीयूआई (जीटीके आधारित) टर्मिनल मल्टीप्लेक्स) जूम चीज कर सकते हैं। (Ctrl-Shift-X डिफ़ॉल्ट कीबाइंडिंग है)। बेशक यह बहुत सी चीजें नहीं करता है जो tmux करता है ...


26
संस्करण 1.8 के रूप में एक बेहतर समाधान है (टायलर होलियन का उत्तर देखें)।
momeara

1
बेहतर जवाब से पहले कोशिश करने वालों के लिए, काम करने के लिए join-pane पाने के लिए: join-pane -t:{previous} पिछली विंडो के लिए या join-pane -t:0 विंडो 0 पर वापस शामिल होने के लिए।
Realistic

440

यह अब एक देशी tmux फीचर है।

संस्करण 1.8 में इसके अतिरिक्त देखा गया -Z झंडा लगाओ resize-pane। मैन पेज से:

-Z के साथ, सक्रिय फलक ज़ूम इन (कब्ज़े) के बीच टॉगल किया जाता है   खिड़की के पूरे) और अनज़ूम (लेआउट में इसकी सामान्य स्थिति)।

यह बाध्य है tmux-उपसर्ग - z मेरी स्थापना पर डिफ़ॉल्ट रूप से (OSB पर Homebrew के माध्यम से)।


3
यह बहुत अच्छा था, बस मेरे .tmux.conf में जोड़ा गया और अब और भी अधिक तरल अनुभव है: बाइंड-की जेड z आकार-फलक -Z
St-Ste-Ste-Stephen

क्या यह संभव है कि गहराई के संकेत के लिए किसी तरह डूबे हुए किनारों के किनारे दिखाई दें? मैं भूल रहा हूँ कि मैं झूम रहा हूँ और "Z- शीर्षक" वास्तव में पर्याप्त प्रमुख नहीं है।
lkraav

BunsenLabs बॉक्स से बाहर काम करता है।
Mateusz Piotrowski

बहुत बढ़िया। यह वास्तव में काम करता है
sayem siam

48

इसलिए मुझे पता है कि आपने कुछ समय पहले यह पूछा था ... लेकिन मैंने आज तक स्क्रीन से स्विच नहीं किया है!

मैं उसी समस्या में भाग गया, यहाँ है कि मैंने इसे कैसे हल किया:

unbind +
bind + new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \; swap-pane -s tmux-zoom.0 \; select-window -t tmux-zoom
unbind -
bind - last-window \; swap-pane -s tmux-zoom.0 \; kill-window -t tmux-zoom

यदि आपका वर्कफ़्लो मेरे जैसा है (यानी आप एक विंडो को अधिकतम करते हैं, कुछ काम करते हैं, तो उसे तुरंत अनसुना कर दें) यह आपके लिए बहुत अच्छा काम करना चाहिए।


(यदि यह स्पष्ट नहीं था, तो यह आपकी मूल विंडो में लेआउट को बनाए रखता है ... अधिकतम करने और अन-अधिकतम करने के बाद, यह बिल्कुल वैसा ही है।)
Ryan

2
किसी भी विचार मैं दोनों के लिए एक ही कीस्ट्रोक कैसे मैप कर सकता हूं? कुछ इस तरह bind c-m select-window -t tmux-zoom ? <minimize> : <maximize>। लेकिन अब मैं इस समारोह को कहीं और परिभाषित करना चाहता हूं, स्वच्छता के लिए, और बस bind c-m :max_or_min। क्या यह संभव है? मुझे खोजना मुश्किल हो रहा है। (मुझे लगता है कि मैं अक्सर गलत कमांड मारता हूं और अतिरिक्त, खाली 'tmux-zoom' विंडो बनाता हूं।)
chadoh

6
मेरे लिए यह तभी काम किया जब मैंने 'स्पष्ट & amp; हटा दिया; इको TMUX ZOOM & amp; & amp; अधिकतम से पढ़ें '।
Epeli

अधिकतम मेरे लिए काम करता है, लेकिन न्यूनतम कार्रवाई केवल मूल विंडो को मारता है, अधिकतम फलक को छोड़ देता है।
paradroid

इस तरह का काम किया है, लेकिन मैं अपना लेआउट खो देता हूं .. हालांकि लगभग!
John Hunt

25

बेहतर जूमर। अब कोई भी कई पैन को ज़ूम कर सकता है, यहां तक ​​कि पदानुक्रम से भी। नीचे करने और अपने tmux सर्वर को पुनः लोड करने के बाद (Ctrl-r in my case) आपके पास आपका होगा एक्स कुंजी एक ज़ूम और ज़ूम आउट करने के लिए बाध्य है। ज़ूम-इन एक नई विंडो में फलक खोलकर प्राप्त किया जाता है, और ज़ूम-इन को इसकी मूल विंडो पर वापस ले जाकर प्राप्त किया जाता है। यदि आप जूम-इन विंडो को विभाजित करते हैं, तो आप ज़ूम-इन विंडो के ज़ूम में ज़ूम-इन विंडो में ज़ूम-आउट कर पाएंगे। ज़ूम-आउट केवल तभी होता है जब आप ज़ूम-इन विंडो में एकल फलक वाले हों।

अपने अंत में जोड़ें ~/.tmux.conf

~$ grep "bind x" ~/.tmux.conf
unbind x
bind x run ". ~/.tmux/zoom"

निम्नलिखित फ़ाइल जोड़ें

~$ cat ~/.tmux/zoom
#!/bin/bash -f
currentwindow=`tmux list-window | tr '\t' ' ' | sed -n -e '/(active)/s/^[^:]*: *\([^ ]*\) .*/\1/gp'`;
currentpane=`tmux list-panes | sed -n -e '/(active)/s/^\([^:]*\):.*/\1/gp'`;
panecount=`tmux list-panes | wc | sed -e 's/^ *//g' -e 's/ .*$//g'`;
inzoom=`echo $currentwindow | sed -n -e '/^zoom/p'`;
if [ $panecount -ne 1 ]; then
    inzoom="";
fi
if [ $inzoom ]; then
    lastpane=`echo $currentwindow | rev | cut -f 1 -d '@' | rev`;
    lastwindow=`echo $currentwindow | cut -f 2- -d '@' | rev | cut -f 2- -d '@' | rev`;
    tmux select-window -t $lastwindow;
    tmux select-pane -t $lastpane;
    tmux swap-pane -s $currentwindow;
    tmux kill-window -t $currentwindow;
else
    newwindowname=zoom@$currentwindow@$currentpane;
    tmux new-window -d -n $newwindowname;
    tmux swap-pane -s $newwindowname;
    tmux select-window -t $newwindowname;
fi

4
केवल एक ही upvote ?! यह जवाब कमाल है! बहुत अच्छी तरह से काम करता है, अच्छी नई कार्यक्षमता का परिचय देता है जो अब मेरे द्वारा उपयोग किए जाने वाले ब्लोटी 'टर्मिनेटर' प्रोग्राम को पूरी तरह से बदल देता है।
sillyMunky

+1 यह वास्तव में अच्छा है! अब तक का सबसे अच्छा काम करने वाला समाधान! धन्यवाद!!
armandino

मैं सहमत हूँ। यह काम करता है, और भयानक से अधिक है। यह स्क्रीन ++ है
Brad Parks

+1। यह बहुत अच्छा काम करता है लेकिन यह @ रयान के उत्तर की तुलना में एक सेकंड (~ 0.8s) धीमा का एक अंश है, कम से कम मेरे सिस्टम पर। कोई बड़ी बात नहीं है, लेकिन मुझे आश्चर्य है कि अगर इसे तेजी से बनाने का कोई तरीका है
Amelio Vazquez-Reina

सुंदर वास्तव में। मुझे विशेष फलक नाम (ज़ूम @…) से प्यार है, जो उपयोगी अनुस्मारक हैं, और एकल "x" ज़ूम इन / आउट कमांड।
Eric O Lebigot

9

Cntl + b (उपसर्ग) + z tmux 2.1 में एक विशेष फलक में ज़ूम करने के लिए काम करता है। इसे फिर से Cntrl + b + z दबाएं, यह मूल आकार में वापस ज़ूम इन करता है। यह एक नया फलक नहीं बनाता है।

Aksay द्वारा ऊपर पोस्ट किए गए समाधान की तुलना में, यदि आप ज़ूम-इन फलक को विभाजित करने का प्रयास करते हैं, तो यह विभाजित करने की अनुमति नहीं देगा, और मूल फलक पर वापस जाएगा और इसके बजाय उस फलक को विभाजित करेगा।

ज़ूम विंडो विकल्प शायद अधिक बहुमुखी है।


2

मैंने इसे एक ही कीस्ट्रोक के साथ अधिकतम / छोटा करने के लिए किया:

bind C-k run "if [[ $(tmux list-window) =~ ZOOM ]]; then tmux last-window; tmux swap-pane -s ZOOM.1; tmux kill-window -t ZOOM; else tmux new-window -d -n ZOOM; tmux swap-pane -s ZOOM.1; tmux select-window -t ZOOM;fi"

1

मेरे लिए भी बिना 'स्पष्ट & amp; & amp; इको TMUX ZOOM & amp; & amp; 'पढ़ें। हर बार इस स्निपेट के साथ मैं पहली विंडो के गायब होने से एक फलक को कम करता हूं।


1

के साथ समस्या resize-pane -Z एक टॉगल होने के नाते यह है कि कभी-कभी यह वांछित की तुलना में रिवर्स जूम ऑपरेशन करेगा, खासकर जब एक स्क्रिप्ट से या अंदर बुलाया जाता है tmux.conf

यहाँ काम के आसपास है:

tmux-zoom-in.sh

#!/bin/bash

# Zoom in the current pane ONLY if it is not currently zoomed.
# Requires tmux version >= 1.8

tmux list-panes -F '#F' | grep -q Z || tmux resize-pane -Z

tmux-zoom-out.sh

#!/bin/bash

# Zoom out the current pane ONLY if it is not currently zoomed.
# Requires tmux version >= 1.8

tmux list-panes -F '#F' | grep -q Z && tmux resize-pane -Z


0

मैं उबंटू 12.04 पर हूं और इस फीचर की भी जरूरत है। चूंकि tmux 1.8 में tmux-prefix z का उपयोग करके ज़ूम टॉगलिंग के लिए देशी समर्थन है। चूँकि हम शायद 12.04 में tmux 1.8 को नहीं देखेंगे। मैंने tmux 1.8 को एक अन्य देव कंप्यूटर पर स्रोत से संकलित किया, इसका नाम बदलकर _tmux-1.8 कर दिया और बस 1.8 बाइनरी को /usr/bin/_tmux-1.8 और संपादित .bash_aliases - & gt; उर्फ tmux = '_ tmux-1.8'।

मैंने इस त्वरित और गंदे तरीके का उपयोग करके किसी भी समस्या पर ध्यान नहीं दिया है और जब / यदि tmux 1.8 12.04 पर आता है तो मैंने कुछ भी नहीं तोड़ा है।


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