tmux로 마지막 window의 마지막 pane일 때만 확인 메시지를 내고, 그 이외는 그대로 kill한다
소개
최근 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
도 봐 주세요.Reference
이 문제에 관하여(tmux로 마지막 window의 마지막 pane일 때만 확인 메시지를 내고, 그 이외는 그대로 kill한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ssh0/items/2c0f0aa1f5179efb02c3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)