tmux로 마지막 window의 마지막 pane일 때만 확인 메시지를 내고, 그 이외는 그대로 kill한다

4125 단어 tmuxMac리눅스

소개



최근 tmux를 사용하기 시작했습니다. xmonad도 사용하고 있기 때문에, 그 존재 가치는 있을까라고도 말할 것 같습니다만, 나는 분할이 사용하고 싶지 않고, 멋진 탭(window의 일)과 잘못 지워 버려도 죽지 않는다 존재를 원할 뿐입니다.



그렇다고 해서, 표제대로, 이것 써두면 편리할지도 라고 하는 설정입니다. 도움이 되면 다행입니다.

하고 싶은 일



한 세션의 마지막 창에서 마지막 pane 인 경우에만 pane을 지울 때 확인 메시지를 발행하고, 그렇지 않으면 확인하지 않고 pane을 지우는 키 바인딩 원해.

방법



대답에서 말하면,
# if session has > 1 windows in current, kill-pane without confirmation.
# But confirm before killing pane when it is the last  pane in the last window.
bind -n M-x if "tmux display -p \"#{session_windows}\" | grep ^1\$ && tmux display -p \"#{window_panes}\" | grep ^1\$" \
    "confirm-before -p \"Kill the only pane in the only window? It will kill this session too. (y/n)\" kill-pane" \
    "kill-pane"

라고 쓰면 됩니다. 이제 메타 키 (Mac이면 Command 키, Windows, Linux이면 Alt 키)를 누른 상태에서 x kill-pane 합니다.

해설



tmux.conf에서 if 문을 사용할 수 있습니다.
if "特殊文字をエスケープさせたシェルコマンド" \
    ”tmux内のコマンド(返り値0で実行される)” \
    "tmux内のコマンド(それ以外のとき実行される)"

라는 형식으로 쓸 수 있습니다. 한층 더 중첩할 수 있을지 어떨지는 하고 있지 않기 때문에 모릅니다만, 아마 할 수 있을 것 같은 생각도 합니다.

덧붙여서, 설정 파일 안에서는 백 슬래시로 이스케이프 할 수 있으므로, 위와 같은 쓰는 방법을 해도 괜찮습니다.

하고 있는 것은 tmux display "#{session_window}" 로 현재 세션이 가지는 window의 수를 내고, 그것이 1일 때만 다음의 조건을 봅니다. 다음은 tmux display -p "#{window_pane}" 로, 그 window내의 pane의 수를 보고, 그것이 1일 때와 그렇지 않은 때에 조건을 나눕니다. 이것이 참일 때는 확인 메시지를 내고( confirm-before -p "..." kill-pane ), 그렇지 않을 때는 아무 말도 하지 않고 kill-pane 하게 됩니다.

또한, 이것과 똑같이 해, 마지막 window일 때만 확인해 kill-window 하도록(듯이) 설정을 쓸 수 있어,
# if session has > 1 windows in current, kill-window without confirmation.
# But confirm before killing window when it is the last window in the session. 
bind -n M-X if "tmux display -p \"#{session_windows}\" | grep ^1\$"\
    "confirm-before -p \"Kill the only window in this session? It will kill the session too. (y/n)\" kill-window" \
    "kill-window"

이렇게하면 Meta 키 + X에 그렇게 키를 할당 할 수 있습니다.

요약



간단한 설정이지만, 나름대로는 꽤 편리해졌다고 생각합니다. 그 밖에도 xmonad 라이크한 키 바인드를 설정하고 있으므로, 좋으면 자신의 tmux.conf 도 봐 주세요.
  • dotfiles/tmux.conf at master · ssh0/dotfiles
  • 좋은 웹페이지 즐겨찾기