tmux-Shift + 페이지 위로 / 아래로 창으로 위 / 아래로 스크롤


14

xterm과 동일한 키 바인딩을 사용하여 주어진 창으로 위 / 아래로 스크롤 할 수 있기를 원합니다 (예 : SHIFT + Page Up / Down).

예를 들어, tmux 창이 두 개의 수직 분할 창으로 나뉘면 키보드를 사용하여 둘 중 하나를 스크롤 할 수 있지만 다른 하나는 스크롤하지 않습니다.

가능합니까?

내 tmux.conf는 다음과 같습니다.

set -g status off
set -g prefix C-o
unbind C-b
bind C-o send-prefix

# settings -------------------------------------------------------------

setw -g utf8 on
setw -g xterm-keys on
set -g default-terminal "screen-256color"

set-option -g set-titles on
set-option -g set-titles-string '[#S:#I #H] #W'

# auto-set window title
setw -g automatic-rename
setw -g aggressive-resize on

# vim keybinds
set-option -g status-keys vi
set-window-option -g mode-keys vi

# scroll inside the current pane
#bind-key k page-up
#bind-key l page-down

# mouse
set -g mode-mouse on
setw -g mouse-select-window on
setw -g mouse-select-pane on

# scrollback buffer n lines
set -g history-limit 100000

# fixes shift-pageup/shift-pagedown
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
set -g visual-activity on

# faster key repetition
set -s escape-time 0

# activity alert
setw -g monitor-activity on
set -g visual-activity on

# alt+directions navigates through panes
bind-key -n M-left select-pane -L
bind-key -n M-right select-pane -R
bind-key -n M-up select-pane -U
bind-key -n M-down select-pane -D

답변:


8

위로 스크롤하려면 다음을 수행하십시오.

bind -n S-Pageup copy-mode -u

위의 내용은 Mac에서 작동하지 않는 것 같습니다.

bind -n S-Up copy-mode -u

내가 알 수있는 한, S-Up을 누른 후에 S-Up을 계속 사용하거나 페이지 업을 계속 스크롤하여 계속 스크롤 할 수 있습니다. 페이지 아래로 스크롤하여 아래로 스크롤 할 수 있습니다. 이것들은 정확히 당신이 찾고있는 키 바인딩이 아니므로 사과드립니다. 이것은 내가 당신의 목표에 더 가까이 갈 수 있도록해야합니다.

편집하다:

방금 테스트했습니다.

bind -n Pageup copy-mode -u

그러면 페이지 업 및 페이지 다운 만 사용할 수 있습니다.


하지만 bind -n Pageup copy-mode -u나 복사 모드를 입력하고 위로 스크롤 페이지 업을 눌러 수 있습니까, 나는 그 때까지 스크롤을 유지하기 위해 PgUp을 사용할 수 없습니다.
apocryphalauthor

6

예, 나는이 질문이 오래되었다는 것을 알고 있지만 구글 결과에서 그다지 멀지 않았으며 구글 결과에 거의 응답이 없었기 때문에 질문을하는 방법을 찾기 위해 많은 시간을 보냈습니다.

복사 모드에서는 AFAIK가 하나의 창만 스크롤됩니다. 당신이 사용할 수있는 복사 모드로 전환 prefix-[한 후 사용하여 스크롤 C-up하고 C-down또는 (config 파일에서) 자신의 키 바인딩을 설정할 수 있습니다 이와 같은 이맥스 모드 외모의 어느 :

bind-key -t emacs-copy -n S-PPage halfpage-up
bind-key -t emacs-copy -n S-NPage halfpage-down

복사 모드 일 때 키 조합 Shift+ PageUpShift+ PageDown를 각각 반씩 아래로 스크롤하도록 설정합니다 . vi 모드를 사용하는 경우 다음과 같이 변경해야합니다.

bind-key -t vi-copy -n S-PPage halfpage-up
bind-key -t vi-copy -n S-NPage halfpage-down

이제 복사 모드를 "자동으로"시작하고 사용하지 않으려면 prefix-[구성 파일에 다음 줄을 추가하십시오.

bind-key -t root -n S-PPage copy-mode -u

편집 모드 (기본 모드)에서 Shift+ PageUp를 누르면 복사 모드가 열리고 (전체) 페이지가 위로 스크롤 됩니다. 이미 페이지를 스크롤하지 않고 복사 모드 만 열려면을 생략하십시오 -u. 전체 페이지를 위 / 아래로 스크롤하거나 한 줄만 스크롤하려면 키워드 page-upscroll-up사용하거나 명령 중 하나를 사용할 수 있습니다

tmux list-keys -t vi-copy
tmux list-keys -t emacs-copy

사용할 옵션 및 기본 키 바인딩의 전체 목록을 보려면.


1
tmux실행중인 버전인지 확실 하지 않지만 -t매개 변수를 인식하지 못합니다 (그러나 -T는 작동합니다) 가능한 오타?
mdip

아마도 오타 일 것입니다. 그러나 이것도 -n지름길이 -T root
아닙니다.

4

근육 기억 장치와 함께 작동 하여 일반 터미널에서 와 같이 Shift+ PageUpShift+ 를 사용할 수있는 솔루션이 PageDown있습니다.

bind -n Pageup copy-mode -u
bind -n S-Pageup copy-mode -u
bind -n S-Pagedown send-keys Pagedown

Vim을 사용하는 경우이 바인딩을 조건부로 활성화하거나 PageUptmux 내부의 vim에서 등 을 사용할 때 문제 가 발생합니다.

is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
    | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind -n Pageup if-shell "$is_vim" "send-keys Pageup" "copy-mode -u"
bind -n S-Pageup if-shell "$is_vim" "send-keys Pageup" "copy-mode -u"
bind -n S-Pagedown send-keys Pagedown

(@mjwhitta의 솔루션 덕분에 개선되었습니다)


+1이지만 bind -n Pageup if-shell "$is_vim" "send-keys Pageup" "copy-mode -u; send-keys Pageup"여러 번 누를 때 Pageup을 계속 스크롤해야했습니다.
79E09796 9
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.