我刚从 OSX 终端切换到 iTerm2,我似乎失去了一项功能。在终端中,我可以用鼠标滚动less
命令的输出,因为我已经安装了MouseTerm。
但是,当我尝试less
在 iTerm2 中滚动输出时,窗口的滚动条会移动。奇怪的是,滚动按预期工作vim
。
如何less
在 iTerm2 中用鼠标滚动输出?
现在它在 iTerm2 中实现,可以通过
设置->高级->滚轮在交替屏幕模式下发送箭头键并将其更改为 是
(defaults write com.googlecode.iterm2 AlternateMouseScroll -bool true
仍然有效,但它只是改变了相同的设置)
iTerm2 问题现在被标记为“已修复”——但修复是添加一个隐藏选项,因此如何启用新AlternateMouseScroll
选项并不是很明显。
正如 Filippo Valsorda(补丁的作者)所写,一旦你安装了 iTerm2 的夜间构建(仍然不存在于 1.0.0.20140629 中),只需运行以下命令:
$ defaults write com.googlecode.iterm2 AlternateMouseScroll -bool true
重新启动 iTerm2,当终端处于 less、vim、emacs 等程序使用的“备用屏幕”(直接寻址)模式时,所有窗口都会将滚动事件报告为向上/向下箭头键转义。
对于 vim 和 emacs 等提供额外鼠标支持的应用程序,您仍需要启用鼠标报告模式,因为此自动模式切换仅启用滚动。
终于做到了,我花了很多时间在这里和那里寻找没有运气,最简单的步骤是:
安装 2.9 测试版
完毕
目前尚未实施。
iTerm 2 问题跟踪器中有一个关于实现它的未解决问题。
不是 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 偏好更改,但它也不会受到伤害。
最新版本的 less 支持 the--mouse
和相关标志,因此无需将箭头键发送到备用屏幕。