(Gnomeターミナルで)tmuxなしでShellを実行した場合、マウスのスクロールは tmux では機能しません。まるで私が上/下キーを押したように、tmuxはマウススクロールイベントを送ります。しかし、私はそれにShellの出力の履歴をスクロールさせたいのです。 tmuxをこのように動作させる方法はありますか?
注:キーボードでスクロールする方法を知っています(ここで 別の質問 に感謝)。
私は2つのバージョンのtmuxでマウススクロールを試みました。
出力の履歴内をスクロールするには^b
+ [
を使用します。ページアップするにはM + Vを、ページダウンするには^ Vを使用できます。私はあなたが本物を使えるかどうかわからない PgUp そして PgDown しかし。私の端末はこれらのキーをtmuxに送信しません。代わりに、それはそれ自体をスクロールし、tmuxの履歴はスクロールしません。
コピーモードを終了するには、Escキーを押します
このモード(コピーモードと呼ばれます)でマウスを使用するには、^b
+ :
を押して、次のように入力します。
setw -g mouse on
注:tmux <2.1では、オプションはmouse
ではなくmode-mouse
という名前でした
コピーモードに切り替えると、マウスを使ってスクロールすることができます。あなたが望むなら、あなたは〜/ .tmux.confにこのコマンドを入れることができます。
更新: tmux 1.5では、このオプションは自動的にスクロールホイールを使用してコピーモードに切り替え、tmuxスクロールバックバッファをスクロールバックします。最初にCtrl-B
+ [
を押す必要はありません。プロンプトまでスクロールダウンしても、コピーモードは自動的に終了します。
Tmux 2.1にはいくつかの変更があります
マウスモードは書き直されました。以下のオプションはもうありません。
代わりにただ一つのオプションがあります: 'mouse'はマウスサポートを完全にオンにします。
それだろう
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'"
現在のバージョンのtmux(1.5)では、mode-mouseオプションをonに設定するだけで、マウスホイールを使ってスクロールすることができます。
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
あなたの.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
http://brainscraps.wikia.com/wiki/Extreme_Multitasking_with_tmux_and_PuTTY ]から取得
誰かが(私が失くしたソースから)~.tmux.conf
に以下を追加することを提案しました:
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
それがどのように動作するのか、それが何をするのか私にはわかりませんが、これにより、tmuxのコピーモードに入る必要なしに、tmuxセッション内でマウスホイールでスクロールすることができます。ホイールとBAMをスクロールするだけです。できます。私はterminal.appを使用していることに注意してください、しかし私はOPが特にgnome-terminal
との使用のために答えを与えたのを覚えています。
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"
この新しいホイールバインディング機能を使用すると、マウスホイールをスクリプト化して、状況に応じた任意の動作を実行できます。
Gnome-terminalは、「通常の」スクロールが制限されている状況で、マウスのスクロールイベントを上矢印キーと下矢印キーに変換する、きちんとした細工をします。たとえば、less
を使用してテキストを表示するとき(これは特に男性を読んでいるときに発生します)、j
、k
、および矢印キーを使用してコンテンツをスクロールできます。しかし、でも、gnome-terminal
では、言及したトリックのおかげでマウススクロールでそれを行うことができます。
それで私はtmux
がless
と同じように端末を「捉える」ことをしていると思います - そしてgnome-terminal
の同じメカニズムはキックインします:マウススクロールは上/下矢印キーを押すことに変換されます。
あなたはプロファイル設定でこの機能をオフにして、どんな状況でも通常のスクロールを得ることができます。 「スクロール」タブの最後のチェックボックスをオフにするだけです。 。
https://github.com/NHDaly/tmux-better-mouse-mode
新しいtmux用のマウス制御の設定可能で機能豊富な実装。強くお勧めします。
あなたはおそらく使いたいと思うでしょう
set -g @emulate-scroll-for-no-mouse-alternate-buffer "on"
それも。
他の答えからのバインディングのアイデアを組み合わせることでかなり満足のいくスクロールの振る舞いを得ることができます。
私のコード:
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-keysを複数回追加したので、マウスホイールの1目盛りで4行ずつスクロールします
すでにtmuxセッションに入っている場合は、次のコマンドを実行できます。
set mouse on
注意:コマンドを実行するには、プレフィックスを使用してから:
を使用します。