在 tmux 中使用终端滚动条

Jef*_*eff 45 terminal command-line terminal.app tmux

我知道如何使用键盘在 tmux 中滚动,但我注意到似乎有一种方法可以将终端滚动条与 GNU Screen 一起使用。这可以用 tmux 完成吗?

Dou*_*g J 48

这在 GNU screen 和 tmux 中都是可能的,解决方法是相似的:欺骗多路复用器认为终端没有“替代屏幕”模式(例如 pico、mutt 等使用的模式)。这是通过为会话设置 termcap 命令来实现的。

对于 GNU 屏幕,请将其放入您的.screenrc

termcapinfo xterm*|xs|rxvt|terminal ti@:te@
Run Code Online (Sandbox Code Playgroud)

对于 tmux,将此添加到您的.tmux.conf

set -ga terminal-overrides ',xterm*:smcup@:rmcup@'
Run Code Online (Sandbox Code Playgroud)

xterm*命令的“ ”部分应设置为您的终端模拟器声明为的任何内容。某种形式的 xterm 是一个很好的猜测,但您可以在大多数健全的 *nix 系统上检查您的:

echo $TERM
Run Code Online (Sandbox Code Playgroud)

这通常可以在您的终端程序的首选项中设置(即:对于 Apple 的Terminal.app,它位于 Settings->Profile->Advanced(或 Settings->Advanced->Emulation pre-yosemite)“声明终端为”。

最终结果是溢出最终出现在终端的回滚缓冲区中,而不是消失。当然,由于这是一个静态缓冲区,当您在屏幕或 tmux 窗口之间切换时,事情会变得混乱,但这对于快速向上滑动以查看ls命令的输出等很方便。

  • 另外,刚刚看到 http://superuser.com/questions/253414/how-to-enter-copy-mode-on-mouse-scroll-in-tmux ,它的工作原理与另一种替代方法相同。 (2认同)
  • 解决方案:https://gist.github.com/1297707 (2认同)
  • 这个“溢出”有效,但在退出 tmux 时显示一些奇怪的 unicode 字符:http://stackoverflow.com/q/31790939/2668831 (2认同)

Shu*_*ary 7

要启用滚动,你可以启用内置的鼠标模式在你~/.tmux.conf如下:

set -g mode-mouse on
Run Code Online (Sandbox Code Playgroud)