配置tmux滚动速度

时间:2016-03-15 04:46:26

标签: 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'"

6 个答案:

答案 0 :(得分:12)

使用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中的滚动速度。较大的数字滚动得更快。要减慢每轮单击一行的滚动速度,请将值设置为0.0到1.0之间的小数。使用十进制值,只有那一部分车轮事件才会生效。该值应为> = 0.示例:

     

" 3" (默认) - 每按一次鼠标滚动滚动三行。   " 1" - 每个鼠标滚轮单击一行(最平滑)。   " 0.5" - 仅在每个其他鼠标滚轮滚动单击时滚动一行。   " 0.25" - 仅在每第四个鼠标滚轮滚动点击时滚动一行。

答案 1 :(得分:6)

我同意,线上只有一条线的滚动速度太慢了。你可以跳半页:

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

答案 2 :(得分:4)

对于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

答案 3 :(得分:1)

那么这是一个相当糟糕的解决方案(使用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即可调整速度。

完全披露:我认为这必须受到我在其他地方读到的东西的极大启发,因为它现在还不是很熟悉。我希望我能记下我的消息来源。

答案 4 :(得分:1)

我无法在tmux 2.6中获得任何答案,最终将其弄清楚,以便发布另一个答案。

这可以作为独立的配置文件使用。

        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                try {
                    double value = Double.parseDouble(editText.getText().toString());
                    if (value >= 100.0) {
                        // Your code goes here.
                    } else {
                        // Your code goes here.
                    }
                } catch (Exception ex) {
                    // Handle empty string. Since we're passing the edittext value.
                }
            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        });

答案 5 :(得分:-1)

有一个tmux的mod,允许为'模式'指定任意数量的命令。键绑定:http://ershov.github.io/tmux/

您可以多次向上或向下滚动或循环执行,甚至可以创建要执行的程序。

例如:

bind -t emacs-copy WheelUpPane tcl { scroll-up ; scroll-up }