tmux - прокрутка вверх / вниз с помощью shift + page up/down на панель
Я хотел бы иметь возможность прокручивать вверх / вниз на заданную панель с той же привязкой клавиш, что и в xterm, т.е. SHIFT + Page Up/Down.
Например, если окно tmux разделено на 2 вертикальные панели, я мог бы прокрутить одну из двух с помощью клавиатуры, а другая не прокрутить.
Является ли это возможным?
Вот мой 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
3 ответа
Вот решение, которое должно работать только с вашей мышечной памятью, позволяя вам использовать Shift+PageUp и Shift+PageDown, как в обычном терминале.
bind -n Pageup copy-mode -u
bind -n S-Pageup copy-mode -u
bind -n S-Pagedown send-keys Pagedown
Если вы используете Vim, вы захотите условно включить эту привязку, или она испортит ситуацию, когда вы используете PageUp и т. Д. В 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, которое это уточняет)
Для прокрутки вверх вы можете сделать:
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
и это позволяет вам использовать только страницы вверх и вниз страницы.
Да, я знаю, что этот вопрос старый, но он не так уж далек в результатах 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+PageDown для прокрутки на половину страницы вверх и вниз соответственно в режиме копирования. Когда вы используете 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
чтобы увидеть полный список вариантов использования и привязок клавиш по умолчанию.