是否可以配置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'"
答案 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导航模式,请注意k
和j
)。
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 }