将终端滚动条与tmux一起使用


41

我知道如何使用键盘在tmux中滚动,但是我注意到看起来好像有一种方法可以在GNU Screen中使用终端滚动条。可以用tmux完成吗?


6
您不能真正在GNU Screen中使用终端滚动条。滚动条实际上​​不会访问Screen的回滚缓冲区,但是会访问终端的缓冲区,这意味着来自不同Screen会话的滚动行会混淆。
ak2

@ ak2悲伤...但感谢您提供信息!
杰夫,

2
iTerm2有一些未来计划[与 tmux集成]( code.google.com/p/iterm2/wiki/TmuxIntegration)。这种集成似乎可能包括使用本机滚动条来查看 tmux历史记录缓冲区。
克里斯·约翰森

Answers:


42

在GNU屏幕和tmux中这都是可能的,并且解决方法类似:使多路复用器误认为终端没有“备用屏幕”模式(例如pico,mutt等使用的模式)。这是通过为会话设置termcap命令来完成的。

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

termcapinfo xterm*|xs|rxvt|terminal ti@:te@

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

set -ga terminal-overrides ',xterm*:smcup@:rmcup@'

xterm*命令的' '部分应设置为您的终端仿真器声明为的任何值。某种形式的xterm是一个很好的猜测,但是您可以使用以下方法在大多数理智的* nix系统上进行检查:

echo $TERM

并且通常可以在终端程序的首选项中进行设置(例如:对于Apple而言Terminal.app,它位于“设置”->“配置文件”->“高级”(或“设置”->“高级”->“模拟优胜美地”)“将终端声明为”。

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


2
另外,还看到了superuser.com/questions/253414/…,它的工作方式如另一种描述。
Doug J

2
解决方案:gist.github.com/1297707
Nick

1
@Nick-请注意,您正在解决另一个问题:向tmux添加鼠标支持。可能对您来说是更好的解决方案,但这与使用本机回滚缓冲区不同。只要正确定义了终端仿真器,以上内容就可以在y * nix(包括OSX)上运行
Doug J

1
看起来这是内置的tcsh。在bash上,您可以使用echo $TERM
Doug J

1
此“溢出”有效,但退出tmux时会显示一些奇怪的unicode字符:stackoverflow.com/q/31790939/2668831
Louis Maddox

5

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

set -g mode-mouse on
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.