跳转到内容

滚动,比看上去难。

  • 在普通 shell 里——你在真实回滚里移动。tmux 上用的是 tmux 自己的缓冲, 进出都干净。
  • 在全屏程序里——划动变成滚轮事件转发给那个程序,让它自己滚。 全程打字都正常。

在 tmux 上,Moshpit 问 tmux「这个窗格的程序有没有抢鼠标」,然后据此路由。 在 herdr 上根本不用问:滚动是一个协议动作, 由服务端决定它该变成鼠标报告还是回滚移动。这是 herdr 悄悄更胜一筹的地方之一。

当一次划动把 tmux 窗格带进了 copy-mode,你接下来敲的字必须到达 shell, 而不是 copy-mode 的覆盖层。Moshpit 会替你退出,并且走的是和按键同一条通道, 所以两者不可能乱序——这里的顺序 bug 表现出来就是「我第一个字符不见了」。

  • 不用多路复用器时,回滚就是 App 自己为这个会话在内存里保留的那些。 断线之后什么都不留。
  • 在 herdr 上,历史翻页是按请求由服务端做的——herdr 没有导出整个回滚 缓冲的 API,所以本地没有一份可供搜索的副本。
  • 走 Mosh 时,协议传的是可见屏幕而不是字节流,所以回滚属于跑在里面的 多路复用器,不属于 Mosh。