43

我刚从 OSX 终端切换到 iTerm2,我似乎失去了一项功能。在终端中,我可以用鼠标滚动less命令的输出,因为我已经安装了MouseTerm

但是,当我尝试less在 iTerm2 中滚动输出时,窗口的滚动条会移动。奇怪的是,滚动按预期工作vim

如何less在 iTerm2 中用鼠标滚动输出?

4

6 回答 6

75

现在它在 iTerm2 中实现,可以通过

设置->高级->滚轮在交替屏幕模式下发送箭头键并将其更改为

的图像

defaults write com.googlecode.iterm2 AlternateMouseScroll -bool true仍然有效,但它只是改变了相同的设置)

于 2016-06-03T09:34:19.973 回答
51

iTerm2 问题现在被标记为“已修复”——但修复是添加一个隐藏选项,因此如何启用新AlternateMouseScroll选项并不是很明显。

正如 Filippo Valsorda(补丁的作者)所写,一旦你安装了 iTerm2 的夜间构建(仍然不存在于 1.0.0.20140629 中),只需运行以下命令:

$ defaults write com.googlecode.iterm2 AlternateMouseScroll -bool true

重新启动 iTerm2,当终端处于 less、vim、emacs 等程序使用的“备用屏幕”(直接寻址)模式时,所有窗口都会将滚动事件报告为向上/向下箭头键转义。

对于 vim 和 emacs 等提供额外鼠标支持的应用程序,您仍需要启用鼠标报告模式,因为此自动模式切换仅启用滚动。

于 2014-07-11T10:25:01.313 回答
3

终于做到了,我花了很多时间在这里和那里寻找没有运气,最简单的步骤是:

  1. 安装 2.9 测试版

  2. 完毕

于 2015-10-01T15:11:46.093 回答
1

目前尚未实施。

iTerm 2 问题跟踪器中有一个关于实现它的未解决问题。

于 2013-03-02T20:37:21.323 回答
1

不是 OP 的问题,但对于任何试图让它在 tmux 中工作的人来说,通过这个 github 评论归功于choco这里有一个片段添加到你的 tmux.conf 以让它正确处理备用屏幕(例如更少,vim) :

# Check if copy-mode or any mouse flags, then send mouse events
# or check if we're in alternate screen end send navigation keys (up, down)

bind -n WheelUpPane if-shell -Ft='#{?pane_in_mode,1,#{mouse_any_flag}}' \
        'send -Mt=' 'if-shell -Ft= "#{alternate_on}" \
        "send -t= Up" "copy-mode -et= ; send -Mt="'
bind -n WheelDownPane if-shell -Ft= '#{?pane_in_mode,1,#{mouse_any_flag}}' \
        'send -Mt=' 'if-shell -Ft= "#{alternate_on}" \
        "send -t= Down" "send -Mt="'

请注意,这不需要其他答案中提到的 Iterm 偏好更改,但它也不会受到伤害。

于 2018-01-02T00:40:30.640 回答
1

最新版本的 less 支持 the--mouse和相关标志,因此无需将箭头键发送到备用屏幕。

于 2020-09-29T23:07:55.847 回答