tmux-прокрутка вверх/вниз с помощью shift + page up/down в панель

Я хотел бы иметь возможность прокручивать вверх / вниз в заданную область с той же привязкой клавиш, что и xterm, i.E SHIFT + страница вверх / вниз.

например, если окно 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
28
задан user1610662
11.11.2022 0:44 Количество просмотров материала 3421
Распечатать страницу

3 ответа

для прокрутки вверх вы можете сделать:

bind -n S-Pageup copy-mode -u

выше, кажется, не работает на Mac, поэтому я тестировал с:

bind -n S-Up copy-mode -u

насколько я могу судить, после нажатия S-Up вы можете продолжать использовать S-Up или просто page-up для прокрутки вверх. Для прокрутки вниз можно использовать page-down. Это не совсем те привязки клавиш, которые вы искали, поэтому я извиняюсь. Это должно приблизить вас к вашей цели, я надеюсь.

EDIT:

Я только что проверил с:

bind -n Pageup copy-mode -u

и это позволяет использовать только страницу вверх и страницу вниз.

7
отвечен mjwhitta 2022-11-12 08:32

Да, я знаю, что этот вопрос стар, но это не так далеко в результатах google, и я просто потратил много времени, чтобы узнать, как это сделать, просто потому, что почти нет результата google не содержал ответа, только вопросы.

AFAIK в режиме копирования прокручивается только одна панель. Для перехода в режим копирования можно использовать prefix-[, а затем прокрутите с помощью C-up и C-down или вы можете установить свои собственные привязки клавиш (в конфигурационном файле), которые в emacs-режиме выглядят так это:

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

это установит комбинации клавиш Shift+PageUp и Shift+вниз прокрутить полстраницы вверх, соответственно вниз когда в режиме copy. Когда вы используете vi-mode, вам нужно изменить его на что-то вроде этого:

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-up,scroll-up или используйте одну из команд

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

чтобы увидеть полный список вариантов использования и по умолчанию привязки клавиш.

4
отвечен Max Matti 2022-11-12 10:49

здесь решение которое должно как раз работать с вашей памятью мышцы, позволяющ вам использовать Shift+PageUp и Shift+вниз как в обычном терминале.

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

Если вы используете Vim, вы хотите условно включить эту привязку или она испортит все при использовании PageUp, etc в vim внутри tmux.

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, которое это уточняет)

2
отвечен Jack Senechal 2022-11-12 13:06

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх