tmux-지정된 위치에 창을 삽입


14

tmux에는 다음 과 같이 지정된 인덱스 로 창을 이동할 수있는 "move-window"명령이 있습니다 .

move-window -t 3

그러나 인덱스 3이 이미 사용 중이면 현재 창을 위치 3으로 이동할 수 없습니다.

이미 가져온 경우에도 3 번 위치에서 내 창을 이동 (삽입) 한 다음 다른 후속 창의 창 번호를 늘릴 수있는 옵션을 찾고 있습니다 (예 : 원래 3 번 창) 4, 다음은 5 등입니다.)

tmux 

답변:


2

아래 스크립트를 사용하면 원하는 것을 할 수 있습니다. 쉘 프롬프트에서 실행하거나 다음을 수행 할 수 있습니다.

:run "ins-move 2 5"

이 예에서는 창 2를 창 5 이전 위치로 이동합니다.

#!/bin/bash
for ((i=$1; i<$2-1; i++))
do
    tmux swap-window -s :$i -t :$((i+1))
done

감사! 잘 작동합니다. "5 2"와 같은 경우에도 작동하도록 조정해야합니다. 적어도 지금은 어떻게되는지 알고 있습니다.

@Andrei : 시작할 수있어서 기쁘다. 적절하다고 생각되면 답변을 승인하고 공표하는 것을 잊지 마십시오.
추후 공지가있을 때까지 일시 중지되었습니다.

나는 당신의 대답을 바로 찬성했습니다. 나는 지금 충분한 평판을 얻었 기 때문에 그것을 할 수 없었습니다.

25

시험: new-window -a

새 창을 만들 때 -a 옵션을 사용하면 다음 인덱스에 새 창을 삽입 할 수 있지만 다른 모든 후속 창 인덱스는 자동으로 증가합니다.


@DennisWilliamson보다 나은 솔루션처럼 보입니다. 죄송합니다. Dennis :-) 실행 중입니다 tmux 1.9a.이 기능은 이전 버전에서 제공되지 않았을 수 있습니다.
소니아 해밀턴

대박. 내가 어떻게 그리웠는지 모르겠습니다. 당신은 과거에 4 년 동안 시간 여행자를 구해주었습니다! 감사!
rld.

인덱스 0에서 새 창을 원하면 작동하지 않습니다.
nccc

1

외부 스크립트가 필요없는 솔루션이 있습니다. .tmux.conf에 다음을 입력하십시오.

bind i command-prompt -p 'Insert window at:' 'run-shell "if tmux select-window -t %1; then tmux new-window -a; tmux swap-window -s %1 -t \$((%1+1)); else tmux new-window; tmux move-window -t %1; fi; tmux select-window -t #I; tmux select-window -t %1;"'

[PREFIX] -i를 누르고 원하는 삽입 위치를 제공하십시오. 마지막 2 개의 선택 창 명령은 '이전'창이 예상대로 설정되고 삽입 된 창으로 이동하는지 확인합니다.

편집 : 좋아, 나는 너무 빨리 말했다. 삽입시 일부 창의 창 색인이 변경되므로 로 변경 #I해야했습니다 #{window_id}. 새로운 기능 (가독성을 위해 줄 바꿈이 추가됨) :

bind i command-prompt -p 'Insert window at:' '      \
    run-shell "                                     \
        if tmux select-window -t %1; then           \
            tmux new-window -a;                     \
            tmux swap-window -s %1 -t \$((%1+1));   \
        else                                        \
            tmux new-window;                        \
            tmux move-window -t %1;                 \
        fi;                                         \
        tmux select-window -t #{window_id};         \
        tmux select-window -t %1;                   \
    "'                                               

.tmux.conf의 다음 두 명령을 통해 단순화 된 버전을 사용하기 시작했습니다.

 bind i command-prompt -p 'Insert window at:' 'new-window -a -t %1; swap-window -t -1'
 bind I command-prompt -p 'New window at:'    'new-window -t %1'

접두사 i는 윈도우 x 가 존재할 때 위치 x에 새 윈도우를 삽입하고 윈도우를 그 위로 위로 이동시킵니다. 접두사-I는 위치에 새로운 창을 만들고 X를 윈도우 때 x가 존재하지 않습니다.

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