답변1
그것은 불가능하며, 앞으로도 불가능할 것입니다. 있다거부된 기능 요청의 경우 session-base-index
개발자는 "그냥 별 도움이 안되는 기능이군요."
답변2
를 언급하고 있는 것으로 보입니다.세션 그룹 인덱스, 이는 생성되며 tmux
어떤 세션에 연결하려는지 알려주는 데 사용되지 않습니다.
그것은에서 사용됩니다템플릿list-sessions
:
"#{?session_grouped, (group ,}" \
그리고 생성된session.c
(그리고 항상 0에서 시작합니다):
/* Find session group index. */
u_int
session_group_index(struct session_group *sg)
{
struct session_group *sg2;
u_int i;
i = 0;
TAILQ_FOREACH(sg2, &session_groups, entry) {
if (sg == sg2)
return (i);
i++;
}
fatalx("session group not found");
}
하지만 해당 값은 형식화된 출력에만 사용됩니다.
답변3
tl;dr
"해결책" 섹션으로 건너뛰세요.
분석
큰 게 하나 있어요오해여기.
스크린샷은 아마도 prefixs기본적으로 다음 tmux 명령을 실행하는 이후에 촬영되었을 것입니다.
choose-tree -Zs
(쉘에서는 으로 실행할 수 있습니다 tmux choose-tree -Zs
). 괄호 안의 숫자는아무것도 아님세션 ID 또는 세션 이름과 관련이 있습니다. 그들은 단지 "줄 번호"일 뿐입니다.현재 목록에. 예를 들어 목록은 다음과 같습니다.
(0) + foo: 2 windows (attached)
(1) + bar: 1 windows
하지만 모든 항목을 확장한 후에는 다음과 같이 보일 수 있습니다.
(0) - foo: 2 windows (attached)
(1) ├─> - 0: [tmux]*Z
(2) │ ├─> 0: man
(3) │ ├─> 1: bash*
(4) │ └─> 2: bash
(5) └─> - 1: bash-
(6) ├─> 0: bash
(7) ├─> 2: bash
(8) ├─> 3: bash
(9) ├─> 4: bash
(M-a) ├─> 5: bash
(M-b) └─> 1: bash*
(M-c) - bar: 1 windows
(M-d) └─> 0: bash*
따라서 이러한 "줄 번호"는 짝수가 아니며 사용할 수 있는 키입니다. 위 목록에만 해당 0
되며 M-c
( Alt+ c)는 세션에 해당합니다.tmux가 세션을 계산하는 방식은 이러한 키와 관련이 없으므로요청했다(그리고 거절했다)session-base-index
당신의 문제를 해결하지 못할 것입니다.계산 요청라인choose-tree
1부터 훨씬 더 의미가 있습니다.
-K
다음을 지정하여 자신만의 키를 정의할 수 있습니다.choose-tree
. 예를 들어 가난한 사람의 교대 근무는 다음과 같이 구현됩니다.
choose-tree -ZsK '#{e|+:1,#{line}}'
이것은 당신에게 이것을 제공합니다 :
(1) + foo: 2 windows (attached)
(2) + bar: 1 windows
하지만 이렇게 하면 최대 9개 라인에만 키가 연결됩니다. 확장 후의 예는 다음과 같습니다.
(1) - foo: 2 windows (attached)
(2) ├─> - 0: [tmux]*Z
(3) │ ├─> 0: man
(4) │ ├─> 1: bash*
(5) │ └─> 2: bash
(6) └─> - 1: bash-
(7) ├─> 0: bash
(8) ├─> 2: bash
(9) ├─> 3: bash
├─> 4: bash
├─> 5: bash
└─> 1: bash*
- bar: 1 windows
└─> 0: bash*
없는 곳 M-a
등M-b
에서암호나는 이것을 발견했습니다 :
#define WINDOW_TREE_DEFAULT_KEY_FORMAT \ "#{?#{e|<:#{line},10}," \ "#{line}" \ "," \ "#{?#{e|<:#{line},36}," \ "M-#{a:#{e|+:97,#{e|-:#{line},10}}}" \ "," \ "" \ "}" \ "}"
따라서 기본값은 choose-tree -K
다음과 같다고 결론을 내렸습니다.
#{?#{e|<:#{line},10},#{line},#{?#{e|<:#{line},36},M-#{a:#{e|+:97,#{e|-:#{line},10}}},}}
#{line}
각각을 ; 로 바꾸면 간단하게 하나씩 이동할 수 있습니다 #{e|+:1,#{line}}
. 또는 적절한 경우 하드코딩된 상수를 변경하여 계산 수를 줄일 수 있습니다.
#{?#{e|<:#{line},9},#{e|+:1,#{line}},#{?#{e|<:#{line},35},M-#{a:#{e|+:97,#{e|-:#{line},9}}},}}
해결책
tmux 명령은 다음과 같습니다:
choose-tree -ZsK '#{?#{e|<:#{line},9},#{e|+:1,#{line}},#{?#{e|<:#{line},35},M-#{a:#{e|+:97,#{e|-:#{line},9}}},}}'
를 호출하여 tmux 내부의 셸에서 테스트할 수 있습니다 tmux choose-tree …
. 결과가 원하는 결과이면 prefixs다음 행을 에 추가하여 명령을 바인딩하십시오 .tmux.conf
.
bind-key s choose-tree -ZsK '#{?#{e|<:#{line},9},#{e|+:1,#{line}},#{?#{e|<:#{line},35},M-#{a:#{e|+:97,#{e|-:#{line},9}}},}}'
tmux 서버가 시작될 때 파일이 구문 분석된다는 점을 명심하세요. 이미 실행 중인 서버에 영향을 미치려면 명령을 tmux(예: tmux bind-key s …
tmux 내부 쉘)에 전달하거나 변경된 파일( prefix:source-file ~/.tmux.conf
Enter)을 다시 로드해야 합니다.
예시 결과
(1) + foo: 2 windows (attached)
(2) + bar: 1 windows
그리고 확장한 후:
(1) - foo: 2 windows (attached)
(2) ├─> - 0: [tmux]*Z
(3) │ ├─> 0: man
(4) │ ├─> 1: bash*
(5) │ └─> 2: bash
(6) └─> - 1: bash-
(7) ├─> 0: bash
(8) ├─> 2: bash
(9) ├─> 3: bash
(M-a) ├─> 4: bash
(M-b) ├─> 5: bash
(M-c) └─> 1: bash*
(M-d) - bar: 1 windows
(M-e) └─> 0: bash*
답변4
앞서 말했듯이 이것은 기본적으로 지원되지 않습니다.
가장 쉬운 해결책은 자동으로 dummy
세션을 생성하는 것입니다.
파일 에 .tmux.conf
다음 줄을 추가하기만 하면 됩니다.
# Start a dummy session to make real sessions start from 1
new-session -d -s dummy
그런 다음 tmux를 시작하면 백그라운드에 "dummy"라는 세션이 생성됩니다. 그러면 수동으로 생성된 첫 번째 세션의 번호가 1로 지정됩니다.
이름을 dummy
다른 이름으로 변경할 수 있습니다.