你可以结合其他答案中的绑定思想,得到一个非常令人满意的滚动行为:在vim中工作,在终端中自动切换到复制模式,到达底部时退出,仍然允许你在man、less和journalctl中使用鼠标滚轮。
我的代码。
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'部分添加其他需要方向键滚动的命令
我添加了多次发送键,所以在鼠标滚轮上打一个勾就能一次滚动4行。