Xtermと同じキーバインド、つまりSHIFT + Page Up/Downを使用して、特定のペインまで上下にスクロールできるようにしたいと思います。
たとえば、tmuxウィンドウが2つの垂直ペインに分割されている場合、2つのうちの1つをキーボードでスクロールし、もう1つはスクロールしないようにすることができます。
出来ますか ?
これが私の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
上にスクロールするには、次の操作を実行できます。
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の検索結果に回答がほとんどなく、質問だけが含まれているため、その方法を見つけるのに多くの時間を費やしました。
コピーモードでは、1つのペインのみスクロールします。コピーモードにするには、prefix-[
を使用してからC-up
とC-down
を使用してスクロールするか、emacs-modeで次のような独自のキーバインディングを(設定ファイルで)設定できます。
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
を省略します。また、ページ全体を上下にスクロールする場合、または1行だけスクロールする場合は、キーワードpage-up
、scroll-up
を使用するか、いずれかのコマンドを使用できます。
tmux list-keys -t vi-copy
tmux list-keys -t emacs-copy
使用するオプションとデフォルトのキーバインドの完全なリストを表示します。
これは、筋肉の記憶だけで機能し、使用できるソリューションです 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、tmux内の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のソリューションに感謝します)