tmuxでスクロールするにはどうすればよいですか?


1294

tmuxを使い始めたばかりで、本当に気に入っていますが、開いているバッファー/ペイン/ウィンドウ内でスクロールできるようにする必要があります。マウスで動作するかどうかは気にしません。tmuxのマニュアルページを検索すると、「スクロール」という単語のインスタンスが2つしか表示されていません。両方ともコピーモードに関係しています。コピーモードに入るためのオーバーヘッドなしでスクロールする方法はありますか?


8
どのようなオーバーヘッドが心配ですか?copy-mode履歴を表示する方法です(必要に応じて履歴をコピーします)。
クリスジョンセン

2
私にとっては、スクロールモードでf7を押して終了するにはqを押すことができます
JohnMerlino

7
set -g mode-mouse on@chaiyachaiyaの答えごとに私にとって勝者だった
ピーターバーグ

回答:


1569

Ctrl- bその後[、通常のナビゲーションキーを使用してスクロールします(例:Up ArrowまたはPgDn)。を押しqてスクロールモードを終了します。

または、Ctrl- b PgUpを押して、コピーモードに直接移動し、1ページ上にスクロールします(ほとんどの場合、このように聞こえます)

ではviモード(下記参照)、あなたも使ってラインでアップ/ダウンラインをページをスクロールすることができますShift- kShift- j(あなたがスクロールモードでは、すでにしている場合)。シフトなしで、カーソルはページの代わりに移動します。

manページからの抜粋:

tmuxは、プレフィックスキー、デフォルトでは「C-b」(Ctrl-b)、それに続くコマンドキーのキーの組み合わせを使用して、接続されたクライアントから制御できます。

 The default command key bindings are:

[           Enter copy mode to copy text or view the history.

Function                     vi              emacs
--------                     --              -----
Half page down               C-d             M-Down
Half page up                 C-u             M-Up
Next page                    C-f             Page down
Previous page                C-b             Page up
Scroll down                  C-Down or C-e   C-Down
Scroll up                    C-Up or C-y     C-Up
Search again                 n               n
Search again in reverse      N               N
Search backward              ?               C-r
Search forward               /               C-s

さらにたくさん。コマンドキーとしてバインドされてC-bいるため、ページアップに使用する場合は2回押す必要があることに注意してくださいC-b。コピーモードコマンドの前に繰り返しカウントを追加する方法については、manページを参照してください。

あなたは使用してキーバインディングモードを設定することができますCtrl- b、その後、

:set-window-option mode-keys emacs

またはvi


14
私が考えてC-b =いるchoose-bufferデフォルトでは。という意味ですかC-b [copy-modeデフォルト)。またC-b PageUp、前のページでコピーモードを直接開始するために使用することもできます(表示/コピーする内容が現在のページから既にスクロールされていることがわかっている場合に非常に便利です)。
クリスジョンセン

4
正しい、私のtmuxにはスクロールモードがありません。C-b [コピーモードに入り、emacsまたはviキーバインドを使用してスクロールする必要があります。これはスクロールするだけの多くの手順のように見えますが、tmuxの利点は依然としてこれらの煩わしさを上回っています。MacBookを使用していますが、PageUpキーはありません:-\。(また、デニスのように
マークダウンで

44
@chadoh:Macbookでこれらを試してください:Home:fn-LeftArrow; 終了:fn-RightArrow; Page Up:fn-UpArrow; Page Down:fn-DownArrow。キーキャップを作成するには:<kbd>Ctrl</kbd>
デニスウィリアムソン

5
Macbookでは、fn + upは端末アプリに直接移動し、tmuxにヒットすることはありません
タイラー

15
Macbookでは、スクロールモードの場合、fn + Shift + LeftArrowを使用してページをスクロールできます。
ニックハモンド

306

さて、スクロールを設定する適切な方法を検討する必要があります。 tmux.conf

set -g mouse on        #For tmux version 2.1 and up

または

set -g mode-mouse on   #For tmux versions < 2.1

それは私にとってウィンドウとペインでうまくいきました。tmuxはまさに完璧です。

実用的なtmuxには、tmux.confファイルに関する詳細情報があります。


5
これを行うと、マウスをクリックしてスクロールすると、tmuxで使用している端末のプロンプト領域に意味不明な文字が印刷されます。何か案は?
エリー

22
将来のtmuxマウスユーザー:入力する前にもう一度下にスクロールしなくて済むようにするには、ヒットqしてスクロールモードを終了します。
ジェズントーマス14年

15
マウススクロールはこれでうまく機能しますが、残念ながらマウスを使用してテキストを選択できなくなりました。Tildaとtmuxを使用します。
friederbluemle

27
tmux 2.1以降では、これがに置き換えられ、set -g mouse on以前のようにスクロールがコピーモードに自動的に入らないことに注意してください。
thrnio

25
重要な注意:この設定は、テキストの強調表示とコピーを中断します。この機能を維持するには、Shiftキーを押しながらクリックします。
-Shadoninja

141

私の.tmux.confから:

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

これにより、ネイティブのxtermスクロールが可能になります。


28
これが何をするのか正確に説明できますか?
イボ

11
私はそれが何をするのか分かりませんが、それは純粋な天才です。最後に、tmuxのスクロールが機能します。
自分

5
これはOS Xでは動作しません
ニック


6
togdonの答えについて混乱している場合は、これを確認してください:superuser.com/questions/310251/…IMO 、ペインが1つしかない場合、このソリューションは受け入れられている答えよりもうまく機能します。
thameera

57

最新のtmux 2.1では、マウスを正常にスクロールするには、これが正解です。

set -g mouse on
" sane scrolling:
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e; send-keys -M'"

.tmux.confをリロードするだけでは、tmuxを再起動する必要はありません。例えば tmux kill-server && tmux

https://github.com/tmux/tmux/issues/145から取得


1
これはどのように受け入れられた答えではないのですか?
マルセル

2
この回答の「.tmux.confを単にリロードするだけでは不十分」というメモと、私のためにすべてのtmuxセッションを終了する(おそらくkill-serverが機能する)のが助けになりました!
コリンD

1
これがどのように機能するか詳しく説明していただけますか?
オリゴフレン

マウスがクリック/スクロールなどされると、マウスイベントを転送するように見えます。ペインが間接/バッファリング状態(コピーモードだけ?)で、マウスがボタンを押したり、スクロールしたりする場合。最後の部分は、最初に間接モードに切り替えることによる直接モードでのスクロールについて説明します。これらのコントロールがない場合、端末は、イベントを履歴スクロールとして解釈する場合があります。そうは言っても、ポケットベルとVimを同時に正しくスクロールさせることができたかどうかはわかりませんが、スニペットを何度も試しました。
ジョンP

2
@chefarov-別の答えのコメントごとに、Shift+clickマウスモードがオンのときにこれを行うことができます。
ブレンダンムーア

14

私の場合、OSX ではopt+ UpArrowopt+ だけDownArrowです。


@ fixer1234この質問ではLinuxについてはまったく言及していません。tmuxOS Xでも使用できます。
-slhck

@slhck:ありがとう。あまりにも退屈な目。乱視が始まった。tmuxタグをlinuxタグと誤読していた。
fixer1234

11

これが私がそれを機能させた方法であり、デフォルトの方法よりも優れていると思う理由です。

試してみるには、すべてのコードセクションをに入れてください~/.tmux.conf

手順1. 1ビットに到達する必要がないように、プレフィックスキーを変更します。「B」は一見近いキーですが、2つの人差し指の中央にあります(それぞれ「F」と「J」)。このショートカットはtmuxに不可欠であるため、Cjは(キーを押すことを除いて)手の動きがゼロであるため、はるかに優れています。

set -g prefix C-j
unbind C-b
bind C-j send-prefix

ステップ2. 'S'(コピーモードに入る)は次のとおりです。1)閉じる(上記と同じ理由)、2)もう一方の手(比較:ボクシングの1-2、またはlsディレクトリ内のファイルを表示するコマンド) )、および3)「スクロール」のニーモニックと考えることができます(ただし、コピーモードはスクロールだけではありません)。

bind s copy-mode

ステップ3.最後の部分、実際のスクロール。「P」と「N」は、この目的のためにEmacsユーザーによく知られています。近く、直観的( 'P'はキーボードの 'N'より上)、およびニーモニック( "前"および "次")です。Emacsでスクロールしてからtmuxに移動した場合、これらのショートカットを使用するのは理にかなっています。

ただし、「I」と「K」はさらに優れていることがわかりました。「P」と「N」よりも近く、直感的です(同じ理由で)。ニーモニックの場合-スクロールは非常に一般的なことなので、ショートカットはすぐに脳を迂回して筋肉の記憶に入るため、ニーモニックはそれほど重要ではありません。

bind -t emacs-copy 'p' scroll-up
bind -t emacs-copy 'n' scroll-down
bind -t emacs-copy 'i' scroll-up
bind -t emacs-copy 'k' scroll-down

7

私はこれをたくさん探しましたが、この詳細なガイドで説明されているように私にとって最適な解決策は動作します:http : //tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

〜/ .tmux.confにこれらのバインディングを追加します。

set -g mode-mouse on

unbind +
bind + \
  new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
  swap-pane -s tmux-zoom.0 \;\
  select-window -t tmux-zoom

unbind -
bind - \
  last-window \;\
  swap-pane -s tmux-zoom.0 \;\
  kill-window -t tmux-zoom

上記のアプローチを実装すると、Prefix +を使用して最初に各ペインにズームインすることにより、ウィンドウのペインからもコピーできます。

マウスモードで欠けていた重要な詳細の1つは、コピーする領域を選択する前にShiftキーを押すことです。これにより、tmuxコピーバッファではなく、従来のターミナルバッファにコピーされます。(https://wiki.archlinux.org/index.php/Tmux#Scrolling_issues


7

tmux-better-mouse-modeプラグインを試して、tmuxマウス関連の問題のほとんどを解決することをお勧めします。

Tmux 2.1+および新しいset-option -g mouse onアプローチと互換性があります。


1
おかげで、これは私にとって最高のソリューションです。それは私が(私はもはやそれを必要としない)を手動で追加したすべての私のマウスホイールのバインディングをカバーし、私は非常に望んでいた2キラー機能があります:scroll-without-changing-pane組み合わせにしてscroll-without-changing-paneとはemulate-scroll-for-no-mouse-alternate-buffer。今、私のtmuxの使用経験は、はるかに優れています。
selurvedu

6

私のために働く唯一のものは、次のものを入れることです ~/.tmux.conf

# 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"

(これを有効にするには再起動が必要な場合があります)

更新:

Putty Connection> Data> Terminal-typeの設定を "xterm"から "putty"(フォーマットの問題を修正するために使用)に変更すると、このソリューションは機能しなくなります。

アップデート2:

端末タイプとして「putty」が必要な場合は、これを使用します。 set -g terminal-overrides "putty*:XT:smcup@:rmcup@:kUP5=\eOA:kDN5=\eOB:kLFT5=\eOD:kRIT5=\eOC"


2
これは、実際にiPhoneアプリでのスクロールの問題も解決します。
ナサニエルキャピタル

私がこれを試した最新のものはもう機能しませんでしたが、これは機能しました。奇妙な。set -ga terminal-overrides ',xterm*:smcup@:rmcup@'
フォックス

4

これは私のために働いた:

vim ~/.tmux.conf
set -g mode-mouse on      ###Insert this setting with vim, then source the file.
tmux source-file ~/.tmux.conf

2
バージョン2.1(2015年10月18日)以降、オプションはset -g mouse on
naoko

設定ファイルのフルパスを実際に提供するために+1。そうでなければ、@ chaiyachaiyaの答えは完璧でしょう。
ジョンマクファーレン

1

FWIW、macbook / OSX Mojaveで、後ctrl+[

  • up arrow ラインアップ用
  • down arrow ラインダウン用
  • fn + up arrow ページアップ用
  • fn + down arrow ページダウン用
  • q表示モードを終了するには

0

私のために働いた唯一のことは、vim〜/ .tmux.conf set#tmuxソースファイル〜/ .tmux.conf


これをより明確にするためにいくつかのフォーマットを使用できますか?[編集]ボタンを使用し、エディターで使用可能なオプションを確認して、便利な形式を追加します。
music2myear

-2
  • Ctrl+ A-スクロールを開始します
  • Ctrl+ C-スクロールを停止します

3
この投稿は短すぎて、質問にうまく答えられません。既に投稿された回答に新しい情報はほとんど追加されません。スクロール方法については何も述べていません(コピーモードの切り替え方法のみ)。また、デフォルトのコマンドプレフィックスキーの組み合わせはCtrl-BCtrl-AGNU画面のデフォルトです)。
アンソニージョゲガン

1
この回答の作者が質問を理解したかどうかはわかりません。それは役に立たず、ただ間違っています。
ヴィック

2
スクロールを停止する方法を長い間探していましたが、指摘してくれてありがとう!
PERR0_HUNTER
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.