기존 키 사용

기존 키 사용

내 현재 창 크기 조정 매핑은 다음과 같습니다.

bind Left resize-pane -L 5
bind Down resize-pane -D 5
bind Up resize-pane -U 5
bind Right resize-pane -R 6

창 크기를 조정하려면 매번 키 바인딩 스트로크와 화살표 키를 입력해야 합니다. 그건 멍청한 짓이야. 일종의 크기 조정 창 모드를 시작하려면 크기가 만족스러울 때까지 키 화살표를 클릭한 다음 크기 조정 창 모드를 종료하세요.

"패닝을 시작하고 화살표 키 모드를 통해서만 크기를 변경할 수 있습니다" 및 "이 모드 종료"에 대한 명령/키 매핑은 무엇입니까?

감사해요

답변1

기존 키 사용

아마도 구성에 아무것도 추가할 필요가 전혀 없을 것입니다. 다음은 창 크기 조정을 위한 기본 바인딩입니다( 에서 :list-keys).

bind-key -r -T prefix M-Up             resize-pane -U 5
bind-key -r -T prefix M-Down           resize-pane -D 5
bind-key -r -T prefix M-Left           resize-pane -L 5
bind-key -r -T prefix M-Right          resize-pane -R 5
bind-key -r -T prefix C-Up             resize-pane -U
bind-key -r -T prefix C-Down           resize-pane -D
bind-key -r -T prefix C-Left           resize-pane -L
bind-key -r -T prefix C-Right          resize-pane -R

-r옵션은 bind-key반복을 지원한다는 의미입니다. 접두어 순서를 다시 입력할 필요 없이 크기 조정이 완료될 때까지 C 화살표 또는 M 화살표를 계속 누를 수 있습니다. 이 반복 패턴이 시간 초과되기 전까지의 시간은 repeat_time옵션에 의해 제어됩니다(기본값 500ms).

접두사 바인딩 없음

접두사 키를 모두 사용하지 않으려면 다른 bind테이블을 사용할 수 있습니다. ~에서키 바인딩매뉴얼 페이지의 일부:

기본적으로(-T 없이) 키는 다음 위치에 바인딩됩니다.접두사키 테이블. 이 표는 접두사 키 다음에 누르는 키에 대한 것입니다(예: "c"가새 창문내부에접두사테이블이므로 "Cb c"는 새 창을 만듭니다). 이것뿌리접두사 키가 없는 키 테이블: 'c'를 다음에 바인딩새 창문내부에뿌리table(더 이상 사용되지 않음)은 일반 "c"가 새 창을 생성함을 의미합니다. -N별칭입니다-티 뿌리.

루트 테이블에 직접 바인딩:

bind-key -n C-Up resize-pane -U 5
bind-key -n C-Down resize-pane -D 5
bind-key -n C-Left resize-pane -L 5
bind-key -n C-Right resize-pane -R 5

복사 모드 바인딩

크기 조정에는 전용 모드를 사용하는 것이 좋습니다. tmux이러한 사용자 정의 모드는 지원되지 않지만 이미 지원됩니다.복사 모드(기본적으로 접두사 입력을 사용 [하고 왼쪽 클릭을 사용합니다 q.) 여기서 키는 일반적으로 접두사 없이 다른 바인딩을 가질 수 있습니다. 불행하게도 이 모드에서는 여러 단어 명령(매개변수가 있는 명령 포함) 바인딩이 지원되지 않습니다.tmux 문제 215). 그러나 작업을 수행하기 전에 테스트할 수 있는 해결 방법이 있습니다 #{pane_in_mode}. 이 질문에 대한 의견과 위의 "접두사 바인딩 없음" 솔루션을 기반으로 합니다.

bind-key -n C-Up if-shell -F "#{pane_in_mode}" "resize-pane -U 5" "send-keys C-Up"
bind-key -n C-Down if-shell -F "#{pane_in_mode}" "resize-pane -D 5" "send-keys C-Down"
bind-key -n C-Left if-shell -F "#{pane_in_mode}" "resize-pane -L 5" "send-keys C-Left"
bind-key -n C-Right if-shell -F "#{pane_in_mode}" "resize-pane -R 5" "send-keys C-Right"

답변2

@JigglyNaga의 답변을 확장하면 사용자 정의 키탭을 정의하고 필요에 따라 전환하거나 다시 전환할 수 있습니다. 키탭에서는 접두사 없이 모든 키를 사용할 수 있습니다. 다음은 제가 사용하는 구성의 예입니다.

bind -T root F4 \
  set prefix None \;\
  set key-table resize \;\
  set status-left '#[bg=#C678DD,fg=#2C323C](resize-#S)' \;\
  set window-status-current-style bg=magenta,fg=black \;\
  set status-style bg=#E06C75 \;\
  refresh-client -S\;\

bind -T resize F4 \
  set -u prefix \;\
  set -u key-table \;\
  set -u status-left \;\
  set -u status-style \;\
  set -u window-status-current-style \;\
  refresh-client -S;

bind-key -r -T resize j resize-pane -D 5
bind-key -r -T resize k resize-pane -U 5
bind-key -r -T resize h resize-pane -L 5
bind-key -r -T resize l resize-pane -R 5


bind-key -r -T resize J select-pane -D
bind-key -r -T resize K select-pane -U
bind-key -r -T resize H select-pane -L
bind-key -r -T resize L select-pane -R

이를 통해 F4(접두사 없이)를 눌러 "크기 조정" 키 테이블로 전환할 수 있습니다. 또한 이 모드에 있을 때 쉽게 확인할 수 있도록 상태의 색상과 이름을 조정합니다. "크기 조정" 테이블에서는 hjkl크기를 조정하고 창 사이를 이동하는 데 사용할 수 있습니다 Shift+HJKL. 크기가 조정된 창에 만족하면 F4를 다시 눌러 일반 tmux 모드로 돌아갈 수 있습니다.

관련 정보