tmux에서 창을“최대화”


239

때로는 tmux에서 창을 최대화 한 다음 이전 크기로 복원하는 것이 매우 유용합니다.

설명서를 읽었으며 방법을 찾을 수 없습니다. 내가 생각해 낸 것은 키를 바인딩하여 창 크기를 "최대"너비로 조정하고 다른 키를 미리 정의 된 너비로 복원 할 수 있다는 것입니다.

물론 이것은 단점이 있으므로 누군가 더 나은 아이디어가 있는지 궁금합니다.

답변:


56

tmux 1.8 이상

이제 아래 답변 에서 기본적으로 지원됩니다 .

버전 1.8에서는 크기 조정 창에 -Z 플래그가 추가되었습니다. 매뉴얼 페이지에서 :

-Z를 사용하면 활성 창은 확대 / 축소 (창 전체 차지)와 확대 / 축소되지 않음 (배치에서 정상 위치) 사이에서 전환됩니다.

이전 TMUX (원래 답변)

또 다른 옵션은 사용하는 방법이 될 수 break-pane다음 join-pane. 로부터 man 페이지 :

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 가하는 일을 많이하지 않습니다 ...


32
1.8 버전부터 더 나은 솔루션이 있습니다 (Tyler Holien의 답변 참조).
momeara

1
더 나은 대답을하기 전에이 작업을 시도하는 사람들은 결합 창을 작동 시키려면 다음 join-pane -t:{previous}을 수행하십시오. 이전 창 또는 join-pane -t:0창 0에 다시 결합하십시오.
Realistic

488

이것은 이제 기본 tmux 기능입니다.

버전 1.8에서는에 -Z플래그가 추가 되었습니다 resize-pane. 매뉴얼 페이지에서 :

-Z를 사용하면 활성 창은 확대 / 축소 (창 전체 차지)와 확대 / 축소되지 않음 (배치에서 정상 위치) 사이에서 전환됩니다.

그것은에 바인딩 된 tmux-prefix- z(OS X에 브루을 통해) 내 설치에 기본적으로.


4
바인드 키 Z 크기 조정 - 창 -Z :이 그냥 내 .tmux.conf에 추가 지금은 훨씬 더 유체 경험이 좋았어요
세인트 인트 인트 스티븐

깊이 표시를 위해 잠긴 창의 가장자리를 볼 수 있습니까? 확대 된 것을 잊고 "Z-title"이 충분히 눈에 띄지 않습니다.
lkraav

BunsenLabs에서 즉시 사용할 수 있습니다.
Mateusz Piotrowski

대박. 실제로 작동합니다
sayem siam


49

그래서 나는 당신이 이것을 전에 물어 본 것을 알고 있습니다 ...하지만 오늘까지 화면에서 전환하지 않았습니다!

나는 같은 문제에 부딪쳤다.

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

7
이것은 'clear && echo TMUX ZOOM && read'를 최대화에서 제거했을 때만 효과적이었습니다.
Epeli

최대화는 저에게 효과적이지만 최소화 조치는 원래 창을 종료하고 최대화 된 창을 남겨 둡니다.
paradroid

이런 종류의 효과가 있었지만 레이아웃이 사라졌습니다.
존 헌트

25

확대 / 축소 기능이 향상되었습니다. 이제 여러 창을 계층 적으로 확대 할 수 있습니다. 아래 작업을 수행하고 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

4
단 하나의 공감?! 이 답변은 굉장합니다! 아주 잘 작동하고, 사용했던 끔찍한 '터미네이터'프로그램을 완전히 대체하는 멋진 새로운 기능을 소개합니다.
sillyMunky

+1 정말 좋습니다! 지금까지 내가 찾은 최고의 작업 솔루션! 감사!!
armandino

동의합니다. 이것은 작동하며 굉장합니다. 스크린 +++
Brad Parks

+1. 이것은 훌륭하게 작동하지만 적어도 내 시스템에서 위의 @Ryan의 대답보다 1 초 (~ 0.8 초) 느립니다. 큰 문제는 아니지만 더 빨리 만드는 방법이 있는지 궁금합니다.
Amelio Vazquez-Reina

참 아름답습니다. 유용한 알림 인 특수 창 이름 (zoom @…)과 단일 "x"확대 / 축소 명령이 마음에 듭니다.
Eric O Lebigot 2018 년

16

Ctrl+ b(접두사) + z는의 특정 창으로 확대됩니다 tmux 2.1. Ctrl+ 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

또한 'clear && echo TMUX ZOOM && read'없이 작업하십시오. 이 스 니펫을 사용하면 첫 번째 창에서 하나의 창을 최소화 할 때마다 사라집니다.


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

1

이제 기본 단축키가 있습니다.

tmux-prefix+z

일반적으로 다음과 같습니다.

Ctrlb+z



0

우분투 12.04에 있으며이 기능도 필요했습니다. tmux 1.8부터 tmux-prefix z를 사용하여 줌 토글을 기본적으로 지원합니다. 우리는 아마도 12.04에서 tmux 1.8을 볼 수 없으므로 다른 dev 컴퓨터의 소스에서 tmux 1.8을 컴파일하고 이름을 _tmux-1.8로 바꾸고 1.8 바이너리를 /usr/bin/_tmux-1.8로 복사하고 .bash_aliases-> alias를 편집했습니다. tmux = '_ tmux-1.8'.

이 빠르고 더러운 방법을 사용하는 데 아무런 문제가 없었으며 tmux 1.8이 12.04에 도달하면 아무 것도 깨지 않았습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.