tmux - прокручуйте вгору / вниз зі зміщенням + сторінки вгору / вниз на панель


14

Я хотів би мати можливість прокручувати вгору / вниз на задану область з тим самим введенням клавіш, що і xterm, тобто SHIFT + Сторінка вгору / вниз.

Наприклад, якщо вікно 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

Відповіді:


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 для входу в режим копіювання та прокрутки вгору, я не можу використовувати PgUp, щоб продовжувати прокручування.
апокрифалатор

6

Так, я знаю, що це питання давнє, але воно не так далеко в результатах 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-режиму потрібно змінити його на щось подібне:

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

щоб побачити повний список опцій використання та типових вкладень.


1
Я не впевнений, це версія, tmuxзапущена чи ні, але -tпараметр не розпізнається (однак, -T працює) Можливий друкарський помилок?
mdip

Швидше за все, помилка друку, але це не має сенсу разом -n, оскільки це ярлик-T root
smido

4

Ось рішення, яке повинно просто працювати з вашою м’язовою пам'яттю, дозволяючи використовувати 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, яке це вдосконалює)


+1, але bind -n Pageup if-shell "$is_vim" "send-keys Pageup" "copy-mode -u; send-keys Pageup"потрібно було отримати Pageup, щоб продовжити прокручування на декількох натисканнях.
79E09796
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.