2010-11-12 14:02:16 +0000 2010-11-12 14:02:16 +0000
271
271

tmux でのマウスによるシェル出力のスクロール

tmuxを使わずにシェルを実行した場合(Gnomeターミナルで)、 tmux ではマウススクロールが動作しないのですが、どうやらtmuxでは上下キーを押したようにマウススクロールイベントが送られてくるようです。tmuxでは上下キーを押した時のようにマウスのスクロールイベントが送られてくるようです。しかし、シェルのoutput履歴をスクロールさせたいのです。tmuxをこのように動作させる方法はありますか?

注:キーボードでスクロールする方法は知っています( 別の質問 のおかげで)。

2つのバージョンのtmuxでマウススクロールを試してみました:

回答 (10)

264
264
264
2010-12-01 18:48:45 +0000

出力の履歴をスクロールするには、^b + [ を使用します。本当のPgUpとPgDownが使えるかどうかはわかりませんが、私のターミナルではこれらのキーはtmuxに送られていません。私のターミナルはこれらのキーをtmuxに送信しません。その代わりに、自分自身をスクロールし、tmuxの履歴を表示しません。

コピーモードを終了するには ESC を押してください。

このモードでマウスを使うには、^b + : を押して、以下のように入力してください。

setw -g mouse on

注意: tmux < 2.1 では、オプションは mode-mouse

ではなく、mouse と名付けられていました。必要であれば、~/.tmux.confにこのコマンドを記述すると、tmuxを実行するたびにロードされるようになります。

Update: tmux 1.5では、このオプションを使うと、スクロールホイールを使うと自動的にコピーモードに切り替わり、tmuxのスクロールバックバッファをスクロールバックするようになります。これ以上、最初に Ctrl-B + [ を押す必要はありません。プロンプトまでスクロールバックすると、コピーモードも自動的に終了します。

127
127
127
2015-10-19 11:02:01 +0000

Tmux 2.1

  • マウスモードが書き換えられました。のオプションがなくなりました。
set -g mouse on
# to enable mouse scroll, see https://github.com/tmux/tmux/issues/145#issuecomment-150736967
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
``` のオプションがなくなりました。
64
64
64
2011-11-15 20:05:50 +0000

現在のバージョンの tmux (1.5) では、単にモードマウスオプションをオンにして、マウスホイールでスクロールできるようにしています。

mode-mouse [on | off]
                 Mouse state in modes. If on, the mouse may be used to
                 enter copy mode and copy a selection by dragging, to
                 enter copy mode and scroll with the mouse wheel, or to
                 select an option in choice mode.

私の.tmux.confでは、以下のようになっています。

set-window-option -g mode-mouse on
59
59
59
2012-10-24 16:55:07 +0000

Try this in your .tmux.conf

# Make mouse useful in copy mode
setw -g mode-mouse on

# Allow mouse to select which pane to use
set -g mouse-select-pane on

# Allow xterm titles in terminal window, terminal scrolling with scrollbar, and setting overrides of C-Up, C-Down, C-Left, C-Right
set -g terminal-overrides "xterm*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"

# Scroll History
set -g history-limit 30000

# Set ability to capture on start and restore on exit window data when running an application
setw -g alternate-screen on

# Lower escape timing from 500ms to 50ms for quicker response to scroll-buffer access.
set -s escape-time 50

Taken from http://brainscraps.wikia.com/wiki/ExtremeMultitasking_withtmux_PuTTY

16
16
16
2011-06-22 17:10:05 +0000

誰かが(ソースを失ったので)~.tmux.confに次のように追加することを提案してくれました。

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

私はこれがどのように動作するのか、何をするのか見当もつかないのですが、これでtmuxのコピーモードに入らなくても、tmuxセッション内でマウスホイールを使ってスクロールできるようになりました。私は terminal.app を使用していますが、OP は gnome-terminal で使用するための回答をしていたと記憶しています。

5
5
5
2015-12-15 23:44:29 +0000

tmux 2.1に新しいマウスバインドが追加されました。

これらのバインドを今日書いたばかりです。Vimは生のマウスホイールのコードを解釈できるので、Vimにいないときにはシームレスにマウスホイールを矢印にバインドしてくれます。

これは、最終的には複数の man ページを表示するためだけにマウスを使うことができることを意味します。必要に応じて if ロジックを拡張したりチェーン化したりして、アプリケーション用にさらに多くのロジックを実装することができます。

bind -n WheelUpPane if "[[#{pane_current_command} =~ vim]]" "select-pane -t = ; send-keys -M" "select-pane -t = ; send-keys Up"
bind -n WheelDownPane if "[[#{pane_current_command} =~ vim]]" "select-pane -t = ; send-keys -M" "select-pane -t = ; send-keys Down"

この新しいホイールバインディング機能により、マウスのホイールをスクリプト化して、好きなようにコンテキストに応じた動作をさせることができます。

5
5
5
2019-04-23 15:29:55 +0000

すでに tmux セッションに入っている場合は、

set mouse on

というコマンドを実行することができます。

3
3
3
2010-12-07 07:03:31 +0000

Gnome-terminal は、"通常の “スクロールが制限されている状態で、マウスのスクロールイベントを上矢印キーと下矢印キーに変換する巧妙な仕掛けをしています。例えば、less を使ってテキストを表示しているとき (これは特に人を読んでいるときに起こる)、j, k, gnome-terminal, そして矢印キーを使って内容をスクロールすることができます。しかし、alsoでは、tmuxでは、前述のトリックのおかげで、マウスのスクロールでそれを行うことができます。

つまり、lessgnome-terminal と同様にターミナルの「キャプチャー」を行い、0x6& と同じメカニズムが働くのだと思います: マウスのスクロールは上下の矢印キーの押下に変換されます。

プロファイル設定でこの機能をオフにして、どんな状況でも通常のスクロールを行うことができます。スクロール」タブの最後のチェックボックスのチェックを外すだけです。

.

1
1
1
2018-01-02 23:48:52 +0000

https://github.com/NHDaly/tmux-better-mouse-mode

新しいtmux用のマウスコントロールの設定可能で機能豊富な実装です。

set -g @emulate-scroll-for-no-mouse-alternate-buffer "on"

も一緒に使いたいと思うでしょう。

0
0
0
2018-02-12 23:02:10 +0000

他の回答からのバインディングのアイデアを組み合わせて、かなり満足のいくスクロール動作を得ることができます: vimでは動作しますが、ターミナルでは自動的にコピーモードに変更され、底部に到達したときに終了します。

私のコード。

bind -n WheelUpPane if -t = "test $(echo #{pane_current_command} |grep -e 'man' -e 'less' -e 'journalctl')" "select-pane -t = ; send-keys Up Up Up Up" "if-shell -F -t = '#{?mouse_any_flag,1,#{pane_in_mode}}' 'send-keys -M' 'select-pane -t = ; copy-mode -e; send-keys -M'"
bind -n WheelDownPane if -t = "test $(echo #{pane_current_command} |grep -e 'man' -e 'less' -e 'journalctl')" "select-pane -t = ; send-keys Down Down Down Down" "if-shell -F -t = '#{?mouse_any_flag,1,#{pane_in_mode}}' 'send-keys -M' 'select-pane -t = ; copy-mode -e; send-keys -M'"

grep -e ‘man’ の部分でスクロールに矢印キーを必要とする他のコマンドを追加することができます

send-key を複数回追加しました。