tmux 및 제어 시퀀스 문자 문제

tmux 및 제어 시퀀스 문자 문제

MacOSX의 명령줄에서 터미널 창 크기를 조정하려고 합니다.

다음 명령을 사용하여 터미널의 너비와 높이를 조정할 수 있습니다(Control Sequence Introducer CSI)

printf '\e[8;100;200t' "resize to 200x100

하지만 터미널에서 tmux를 사용하면 명령(printf '\e[8;100;200t')이 더 이상 작동하지 않습니다.

어떤 조언이라도 대단히 감사하겠습니다.

이것은 내 tmux 구성 파일입니다.

bind r source-file ~/.tmux.conf \; display "Reloaded!"  #Reload with ctrl-r
set-window-option -g mode-keys vi                       #copy-mode vim-like 
set -g prefix `                                         #prefix from ctrl-b to ctrl-a
unbind C-b                                              #allow ctrl-b for other things
set -sg escape-time 1                                   #quicker responses
bind ` send-prefix                                      #Pass on ctrl-a for other apps
set -g base-index 1                                     #Numbering of windows
setw -g pane-base-index 1                               #Numbering of Panes
bind \ split-window -v                                  #Split panes horizontal
bind v split-window -h                                  #Split panes vertically

unbind-key j
bind-key j select-pane -D # Similar to 'C-w j' to navigate windows in Vim
unbind-key k
bind-key k select-pane -U
unbind-key h
bind-key h select-pane -L
unbind-key l
bind-key l select-pane -R

unbind-key Left 
bind-key  Left resize-pane -L 10 
unbind-key Right 
bind-key  Right resize-pane -R 10 
unbind-key Up 
bind-key  Up resize-pane -U 10 

unbind-key Down 
bind-key  Down resize-pane -D 10 

set -g window-status-current-style fg=red
set -g default-command "reattach-to-user-namespace -l /bin/bash"

답변1

이스케이프 시퀀스는 tmux에 의해 해석되며 tmux가 실행 중인 터미널 프로그램에 전달되지 않습니다. 이를 통과시키려면 이스케이프 시퀀스를 래핑하여 tmux에 이를 전달하도록 지시해야 합니다.

printf '\ePtmux;\e%s\e\\' "${escape_sequence}"

여기서 변수는 $escape_sequencetmux가 터미널에 전달하려는 시퀀스입니다. 예를 들어 원래 문제의 시퀀스는 다음과 같습니다.

printf '\ePtmux;\e\e[8;100;200t\e\\'

이에 대한 문서는 많지 않지만 버전 1.5의 CHANGES 파일에서 증거를 찾을 수 있습니다.https://github.com/tmux/tmux/blob/1.5/CHANGES#L33

관련 정보