題 “最大化”tmux中的窗格


有時,在tmux中最大化窗格然後將其恢復為之前的大小非常有用。

我一直在閱讀手冊,我找不到辦法。我想到的是,我可以綁定一個鍵來將窗格調整為“max”寬度,另一個鍵將其恢復到某個預定義的寬度。

當然這有它的缺點,所以我想知道是否有人有更好的主意。


199
2018-01-27 23:10


起源




答案:


另一個選擇可能是使用 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,對不起)。

只是提到這一點 終結者 (GUI(基於GTK的)終端多路復用器)可以進行縮放。 (Ctrl-Shift-X是默認的鍵綁定)。當然它並沒有做很多tmux所做的事情......


49
2018-05-03 22:50



從版本1.8開始,有一個更好的解決方案(參見Tyler Holien的回答)。 - momeara
對於那些在更好的答案之前嘗試這個的人,要使連接窗格工作,請執行以下操作: join-pane -t:{previous} 對於上一個窗口或 join-pane -t:0 加入它回到窗口0。 - Realistic


這是一個原生的tmux功能。

版本1.8增加了 -Z 國旗 resize-pane。從手冊頁:

使用-Z,活動窗格在縮放(佔用)之間切換   整個窗口)和unzoomed(它在佈局中的正常位置)。

它必然會 TMUX前綴 - ž 默認情況下我的安裝(通過OS X上的Homebrew)。


423
2018-04-01 18:49



這很棒,只是添加到我的.tmux.conf中,現在有了更流暢的體驗:bind-key z resize-pane -Z - St-Ste-Ste-Stephen
有可能以某種方式使水下窗格的邊緣可見深度指示?我一直忘記我已經放大了,而且“Z-title”還不夠突出。 - lkraav
在BunsenLabs開箱即用。 - Mateusz Piotrowski


所以我知道你剛才問過這個問題......但是我沒有從屏幕切換到今天!

我遇到了同樣的問題,這是我如何解決它:

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

如果您的工作流程與我的一樣(即您最大化窗口,做一些工作,然後立即取消最大化),這對您來說非常有用。


47
2017-11-15 20:21



(如果不清楚,這將保持原始窗口中的佈局......在最大化和非最大化之後,它完全相同。) - Ryan
知道如何將相同的擊鍵映射到兩者嗎?就像是 bind c-m select-window -t tmux-zoom ? <minimize> : <maximize>。但是現在我想在其他地方定義這個功能,為了清潔,而且只是 bind c-m :max_or_min。那可能嗎?我發現很難找到。 (我發現我經常使用錯誤的命令並最終創建額外的空'tmux-zoom'窗口。) - chadoh
只有當我從最大化中刪除'clear && echo TMUX ZOOM && read'時,這才對我有用。 - Epeli
最大化對我有用,但最小化操作只會殺死原始窗口,留下最大化的窗格。 - paradroid
這種方式有效,但我失去了我的佈局..差不多! - John Hunt


改進的zoomer。現在,人們可以放大多個窗格,甚至是分層次。在執行以下操作並重新加載tmux服務器(在我的情況下為Ctrl-r)之後,您將擁有自己的服務器 X 鍵綁定放大和縮小窗格。通過在新窗口中打開窗格來實現放大,並通過將窗格恢復到其原始窗口來實現縮小。如果您最終拆分放大窗口,您將能夠放大放大窗口的窗格並縮小回放大窗口。只有在包含單個窗格的放大窗口中時才會發生縮小。

添加以下內容到您的結尾 ~/.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

24
2018-06-07 06:03



只有一個upvote?!這個答案太棒了!工作得很好,引入了很好的新功能,現在完全取代了我以前使用的膨脹“終結者”程序。 - sillyMunky
+1這真的很棒!到目前為止,我遇到的最佳工作解決方案!謝謝!! - armandino
我同意。這很有效,而且非常棒。這是屏幕++ - Brad Parks
+1。這很有效,但它比@ Ryan上面的答案慢了幾分之一(~0.8s),至少在我的系統上。沒什麼大不了的,但我想知道是否有辦法讓它更快 - Amelio Vazquez-Reina
確實美麗。我喜歡特殊的窗格名稱(縮放@ ...),它們是有用的提醒,以及單個“x”放大/縮小命令。 - Eric Lebigot


Cntl + b(前綴)+ z用於放大tmux 2.1中的特定窗格。你再次按下Cntrl + b + z,它會將窗格縮放回原始尺寸。它不會創建新窗格。

與aksay上面發布的解決方案相比,如果您嘗試拆分放大的窗格,它將不允許拆分,並將返回到原始窗格並拆分該窗格。

縮放窗口選項可能更通用..


7
2017-09-01 13:46





我這樣做是為了通過相同的擊鍵最大化/最小化:

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"

2
2018-05-07 21:32





對我來說,沒有'清除&&迴聲TMUX ZOOM &&讀'工作。每次我從第一個窗口最小化一個窗格時,使用此片段消失。


1
2018-04-20 12:21