2011-12-12 2 views
13

나는 3 개 창을 :tmux 재정렬 창이 삭제되면 어떻게 작성합니까?

1:zsh 2:vim* 3:htop 

나는 현재 창을 (# 2), I는이 창 남은 삭제하면 : 자동으로 번호를 지정하도록

1:zsh 3:htop 

가 어떻게 그것을 만들 수 있습니다

1:zsh 2:htop 

올바르게 회상하면 이것은 GNU Screen의 기본 동작입니다. 나는 항상 :swap-window 일 수 있다는 것을 알고 있지만 이것이 가능하면 자동으로 알고 싶습니다.

+0

이것은 http://superuser.com 또는 http://unix.stackexchange.com에서 더 좋은 질문입니다. – ziesemer

+2

이와 같은 기능에 대한 패치는 [tmux-users * 메일 링리스트에 떠있었습니다] (http://search.gmane.org/?query=renumber&group=gmane.comp.terminal-emulators.tmux.user), 그러나 그들은 주 코드에 포함되지 않았다. "tmux renumber windows"를 빠르게 검색하면 [번호를 다시 매기는 스크립트] (http://brainscraps.wikidot.com/tmux-renum)가 나오지만 수동으로 호출해야합니다 (쉘 또는 'run-shell을 통한 바인딩 '). –

+4

최근에 릴리스 된 * tmux * 1.7에는'renumber-windows' 세션 옵션 (창 번호를 유지하지 않음)과'move-window -r' 명령 (창을 한 번 다시 번호 매기기)이 있습니다. 모든 세션에 대해 "gapless"숫자를 원한다면, 설정 파일에 (* tmux * 1.7이 있으면)'set -g renumber-windows on '을 넣을 수 있습니다. –

답변

15

좀 더 간단하게하자.

당신은 버전 1.7 이하 TMUX 사용하는 경우, ~/.tmux.conf에 다음 줄을 추가합니다

bind-key C-s run "for i in $(tmux lsw|awk -F: '{print $1}'); do tmux movew -s \$i; done" 

당신은 모든 창을 정렬 할 수 있습니다, 다음 Ctrl 키 + PREFIX-KEY을 입력하여. 그렇지

, 당신은 이미 모든 사람들이 말하는 것처럼, ~/.tmux.conf에 다음 줄을 추가, 위의 버전 1.7을 TMUX 사용하는 경우 :

set-option -g renumber-windows on 
+0

여기의 바인드 키 옵션은 tmux 1.6에서 제대로 작동하지 않습니다.첫 번째 창은 항상 끝으로 번호가 변경되고 나머지는 아래로 이동하므로 창은 순환 목록처럼 작동하고 실행될 때마다 회전하며 잠재적으로 완전히 다시 정렬됩니다. 아래의 'chris'답변은 훨씬 더 신뢰할 수 있습니다. – papercrane

1

아래의 bash 스크립트 (tmux API의 변경 사항을 반영하기 위해 [1]의 업데이트 된 버전)는 tmux 세션을 재정리합니다. 모든 쉘에서 호출 할 수있는 bash 함수로 추가하는 것이 좋습니다.

# re-number tmux sessions                                                     
for session in $(tmux ls | awk -F: '{print $1}') ;do                                              
    inum=0                                                         
    for window in $(tmux lsw -t 0 | awk -F: '/^[0-9*]/ {print $1}') ;do                                         
     if [ ${window} -gt ${inum} ] ;then                                                 
      echo "${session}:${window} -> ${session}:${inum}"                                            
      tmux movew -d -s ${session}:${window} -t ${session}:${inum}                                         
     fi                                                         
     inum=$((${inum}+1))                                                    
    done                                                         
done 

[1] http://brainscraps.wikidot.com/tmux-renum

10

1.7 TMUX 때문에, 당신이 그렇게 할 단 하나의 명령을 입력 할 수 있습니다

tmux movew -r