最近我开始在 Mac 的终端中使用 tmux。然而,现在每当我处于 tmux 会话中并使用鼠标向上或向下滚动时,它都会滚动浏览我的命令历史记录,而不是滚动浏览我的终端窗格。如何禁用此功能并使鼠标滚动恢复为默认行为?
答案1
运行这个命令:
$ tput rmcup
最有可能发生的情况是,您在本地或远程运行一个使用终端“备用屏幕”模式的命令(例如vim
、 或top
,或许多使用类似于 的库的程序)。ncurses
当此选项处于活动状态时,许多终端程序会帮助将鼠标上的滚动操作重新映射到箭头键,因为通常滚动本地显示的帮助不大。如果此应用程序非正常终止,您的终端可能仍认为它处于该模式。
此命令会重置此设置,并且应该重新启用您的滚动功能。
我猜你正在使用 iTerm?
答案2
原因可能是当应用程序处于“光标定位模式”时,您的终端会发送鼠标滚轮的向上和向下键,但本身不请求鼠标,这就是关闭鼠标选项的 tmux 的情况。
您也许可以将终端配置为不执行此操作,但这不太可能。但是,大多数终端允许您按住 Shift 或 Ctrl 或其他修饰键来选择或滚动,因此您可以尝试此操作。
运行 tmux 时你会发现终端回滚并不可靠,因为 tmux 对其几乎没有控制权。使用 tmux 时复制文本的推荐方法是打开 tmux 自己的鼠标支持(set -g mouse on)并使用复制模式。
答案3
正如@Nicholas Marriott 在评论中提到的,set-option -g mouse on
你遗嘱中的一行可能.tmux.conf
会做你想做的事。 (确保您使用的是最新的 tmux 版本。)放萨G全局的选项打开鼠标交互。
当您选择该选项时, tmuxmouse
还会自动复制文本,并且您将能够单击 tmux 窗格并拖动其边框。
这也可能会产生一些副作用,因此您当然可以决定是否要走这条路:
tmux 中的滚动与普通终端仿真器的滚动略有不同。例如,我不确定如何获得良好的“输入时滚动到底部”行为,但似乎如果您需要,您可以替换快速^C
返回底部。 (如果您向上滚动,这只会转到底部,并且不会打印另一个命令提示符。)
最大的缺点是(据我所知)您将无法在寻呼机程序中滚动。 (不过,你也许可以以某种方式解决这个问题。)
从原始发布日期来看,您现在可能不需要这个问题的答案,但希望这对某人有帮助。 :)