web-dev-qa-db-ja.com

tmuxスクロール速度を構成する

Tmuxスクロール速度(マウスホイールまたはタッチパッドを使用)を構成できますか?

Tmux 2.1で(構成に応じて)スクロールが壊れ、構成を更新するように強制されました。私は数週間前にそれをしました。

しかし、今ではtmuxのスクロールが以前よりも遅いと思います*。私はあなたがスクロール速度を設定できることを読んだと思いますが、私はそれについて今どこにも言及を見つけることができません。

*マウスホイールでのスクロールです。 (私は実際にはMacbookトラックパッドを使用していますが、これはマウスホイールに相当すると思います。)

10C-u(viキーバインディングを使用)で10ページ上にジャンプできることは知っていますが、マウスですばやくスクロールできるようにもしたいと思います。

これは私が個人的に現在持っているすべての関連する設定だと思います:

# Use the mouse to select panes, select windows (click window tabs), resize
# panes, and scroll in copy mode.
# Requires tmux version >= 2.1 (older versions have different option names for mouse)
set -g mouse on

# No need to enter copy-mode to start scrolling.
# From github.com/tmux/tmux/issues/145
# Requires tmux version >= 2.1 (older versions have different solutions)
bind -n WheelUpPane if-Shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
22
David Winiecki

tmux-scroll-copy-mode プラグインを使用すると、ここで役立つはずです。

インストールしたら、set -g @scroll-speed-num-lines-per-scroll 5を.tmux.confに追加します。

scroll-speed-num-lines-per-scroll-マウスホイールのスクロールイベントごとにスクロールする行数を設定します。デフォルトのオプションは3で、これはtmux 2.0のスクロール速度でした。数値が大きいほどスクロールが速くなります。ホイールクリックごとに1行より遅くスクロールを遅くするには、値を0.0〜1.0の小数に設定します。 10進値では、ホイールイベントのその一部のみが有効になります。値は0以上でなければなりません。例:

"3"(デフォルト)-マウスホイールのクリックごとに3行スクロールします。 "1"-マウスホイールのスクロールクリックごとに1行(最もスムーズ)。 "0.5"-マウスホイールを1回おきにスクロールクリックしたときに1行だけスクロールします。 "0.25"-マウスホイールを4回スクロールするたびに1行だけスクロールします。

13
domi91c

Tmux 2.4以降では、次のように動作します:

bind -Tcopy-mode WheelUpPane send -N1 -X scroll-up
bind -Tcopy-mode WheelDownPane send -N1 -X scroll-down

これにより、一度に1行ずつスクロールするように設定されます。

changelog から-Changes from 2.3 to 2.4を探します

7
Henry Thiemann

私はtmux 2.6の時点では、ここで機能する答えを得ることができませんでした(2.9で最後にテスト)、結局それを理解して別の答えを投稿しました。

これはスタンドアロン構成ファイルとして機能します。

set -g mouse on

set-option -g status-keys vi
set-window-option -g mode-keys vi

bind-key -T copy-mode-vi WheelUpPane send-keys -X halfpage-up
bind-key -T copy-mode-vi WheelDownPane send-keys -X halfpage-down
6
ideasman42

私が同意するのは、行が1行だけの場合のスクロール速度が遅すぎることです。あなたはそれを半ページジャンプさせることができます:

bind -t emacs-copy WheelUpPane   halfpage-up
bind -t emacs-copy WheelDownPane halfpage-down

それでも、ここで提案されている半ページの修正は速すぎて、ジャンプの感覚だけに置き換えてスクロールの印象を壊します。スクロールをカスタム速度で実行するには、次のようないくつかのキー送信コマンドを追加できます。

 # Scrolling in tmux
 set -g mouse on
 bind -n WheelUpPane if-Shell -F -t = "#{mouse_any_flag}" "send-keys -M; send-keys -M; send-keys -M; send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M; send-keys -M; send-keys -M; send-keys -M' 'copy-mode -e; send-keys -M; send-keys -M; send-keys -M; send-keys -M'"
 bind -n WheelDownPane if-Shell -F -t = "#{mouse_any_flag}" "send-keys -M; send-keys -M; send-keys -M; send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M; send-keys -M; send-keys -M; send-keys -M' 'copy-mode -e; send-keys -M; send-keys -M; send-keys -M; send-keys -M'"
6
xApple

これはかなり悪い解決策です(vimナビゲーションモードを使用して、kjに注意してください)。

bind-key -n WheelUpPane if-Shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if-Shell -Ft= '#{pane_in_mode}' 'send-keys 5 k' 'copy-mode -e'"

bind-key -n WheelDownPane if-Shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if-Shell -Ft= '#{pane_in_mode}' 'send-keys 5 j'"

すべてのトレードオフが何であるかはまだわかりませんが、1つ目はカーソルがその場所全体に移動し、2つ目が上にスクロールしてから下にスクロールする、またはその逆に方向を切り替えると、カーソルがペインのもう一方のエッジに移動します。

速度を設定できるという利点があります。 5は速度を調整します。

完全な開示:それは、今はあまり馴染みがないので、どこかで読んだものにひらめきがあったに違いないと思います。私は自分の情報源を信用したいと思います。

1
David Winiecki