发现咱们这里没人用tmux

感觉tmux在外面相当火,似乎大多数人都在用tmux。但咱们这里宁可多开几个ssh

想问一下tmux到底有没有什么特别的优势?

Emacs Client (daemon) 是 Tmux 的上位替代。

Tmux 优点: 稳定。
Tmux 缺点: 功能少(相比 Emacs),需要配置单独的快捷键,应用之间的交互比较弱。

Emacs Client 缺点:如果你经常需要重启你的 Emacs 的话,用来做终端复用就不太合适。
Emacs Client 优点:它是 Emacs。

1 个赞

对分屏没需求,坑太多了, esc delay,颜色,复制粘贴,按键冲突等等,如果不是天天用的话基本每过一段时间都要重学按键,而且远程的话直接用 tramp 只是偶尔用 ssh

我用 tmux

tmux 不是只用来分屏的。。。ssh 连接断掉后 tmux session 都能活着,甚至可以从远端直接操纵某个 tmux session。「多开几个ssh」根本无法实现这个能力,想让程序持续运行就得用 nohup,比 tmux 差远了。

7 个赞

远端开个 emacs daemon 一样的效果 :laughing:

最大的好处就是ssh断了连回去就行,程序持续运行。screen也差不多。 不过要是本地用这玩意并不好用,还是键鼠协同操作比较舒服

tmux 有利有弊。

tmux 其实就是个终端下的窗口管理器,当然大多数人都是因为可以在远端主机上开着tmux server,让tmux帮你维持pty会话。

缺点就是tmux限制了一部分现代终端的特性,因为你在tmux里,terminfo就是用的tmux支持的那几个,而且还有一个就是按键序列要转换两次,一次在tmux,一次在你自己的终端模拟器。我在github issue就看到kitty的作者tmux那边争吵过,kitty也建议不要用tmux并觉得tmux是个不好的东西。其实现代一些的终端模拟器比如wezterm和kitty也可以实现multiplex,不一定需要tmux。

tmux简单优雅稳定而且不管你用什么终端模拟器都能用,其实tmux挺好。

esc delay 是因为如果远程连接就会有延时,如果这个值太小的话转义序列就会有问题,如果你本地用设置成0就好了;颜色已经支持真彩色了只要你的终端模拟器支持;复制粘贴其实很好用,按键冲突重新映射下prefix key,按键不熟可以<prefix-key>?

1 个赞

我用。而且是高度依赖。我在本地都用,为了保持和远程的操作习惯一致。

一,是为了在远程保留会话,和分屏。 二,我把它作为emacs的多个tab来用。虽然emacs本身也有tab,但是它在tab内不能保存布局。tmux可以保存布局。

kitty这种term客户端虽然可以multiplex,但是它不能保存会话吧?这有啥可和tmux争的,完全是无理取闹。

我觉得对term客户端来说,如果不能很好的支持tmux,可以算是次品。

1 个赞

复制粘贴只要终端模拟器支持那个什么协议的。可以无缝衔接。

1 个赞

emacs 还是以 gui 为主的。tmux 本身就是配合终端程序用的,和 gui 不搭干。 至于外面世界很火,tmux 也不怎么火吧?现在最火的远程开发方式应该是用 vscode 直接连 ssh 开发。tmux 主要比较适配 vim 的工作流。

很多人遇到的 tmux 快捷键有问题和显示颜色的问题,那通常都是配置不对,或者自己用的终端模拟器本身就不够现代。正常终端能支持的快捷键和真彩显示,tmux 都能支持。哪怕是 Extended keys (CSI u) 协议 tmux 也是支持的。

此外,还有一个 multiplex 叫 zellij,这个目前支持了 sixel,比较有意思,tmux 目前来看在相当长的时间内应该不会实现这个协议了。不过 zellij 的默认快捷键的 schema 非常难用,全是打架,熟悉用终端快捷键的人用过应该都觉得忍不了它的默认快捷键。。。不知道是怎么设计出来的。。。

1 个赞

从窗口管理器的角度来说,有用。另外,wezterm可以在远端开daemon替代tmux没问题。没有不能很好支持tmux的终端模拟器的说法,tmux也只是一个面向终端的软件没有什么支持不支持的说法,你可能理解错了。简单的说,现代的终端模拟器实现的一些高级的capacity, tmux并没有实现,比如kitty terminal graphics protocol。所以不管你终端模拟器多么高级,你用tmux,这些东西你都用不了

如果有远端daemon的那可以和tmux争一争。

tmux 对于远程开发是神器,完全不担心ssh断掉。关机回家,第二天直接恢复现场继续

1 个赞

我也用tmux,但平时是wm.除了远程服务器上比较需要,平时也没有太多应用场景。

zellij 或许是 替代 tmux 的 未来工具,用rust 实现的,功能强大,我已经用了大半年了

5 个赞

能不能先问问是不是没人用?

我用 tmux 的三点原因:

我终端用的 vterm,vterm 使用了 C-s 来实现 copy-mode。而我为了用 C-s 来搜索(保持 emacs 习惯),把这个功能禁掉了,便套了层 tmux 复制;

Emacs daemon 和桌面会话绑定,退出时会杀掉,所以用 tmux 来保留某些终端会话;

Tmux 写 shell 脚本来自动化需要交互的步骤,比如服务器开机进 BIOS 修改设置等,比较方便。

我每天都用tmux,进入terminal,就会把tmux打开。但不和Emacs连用,就是各用各的。

1 个赞

因为机器太多了,而且机器上只有screen,一直用screen,非常稳定。不折腾tmux,用过,不太习惯。

每天都在用。。。。