tmux

tmux

我即将重新开始使用GNU 屏幕但我偶尔听到人们提到tmux作为更好的选择。它真的能提供所有功能的替代方案吗屏幕有哪些功能,例如在不同的窗口中进行活动监控等?每种功能的优点和缺点是什么?

答案1

tmux我更喜欢的一些(主要)原因screen

  • 状态栏使用起来更加方便。您可以轻松为当前窗口、活动窗口等设置不同的文本/样式,并且可以将内容放在状态栏的左侧和右侧,包括可以按指定间隔(默认为 15 秒)运行的 shell 命令。
  • 几乎任何可以在tmuxshell 中运行的命令都可以用 来运行tmux command [args]。这使得编写脚本非常容易,也使得执行复杂命令变得容易。
  • 更准确的自动窗口重命名。虽然screen根据命令的第一个字设置标题,并且甚至需要 shell 配置才能在 shell 窗口中执行此操作,tmux跟踪每个窗口中实际运行的进程,并相应地更新标题。这样,您可以使用任何 shell 和零配置进行动态重命名。例如:假设您正在运行 Z Shell;窗口的名称将是“zsh”。现在假设您想要编辑一些配置文件,因此您输入sudo emacs /etc/somefile。当 sudo 要求您输入密码时,窗口的名称将是“sudo”,但是一旦您完成并sudo启动emacs,标题将变为“emacs”。当您完成所有操作并退出时emacs,标题将变回“zsh”。这对于跟踪窗口非常有用,并且在特定情况下也特别有用,例如如果您在另一个窗口中有一些长时间运行的进程,偶尔会提示您使用输入dialog;当发生这种情况时,窗口名称将更改为“dialog”,因此您会知道您必须切换到该窗口并执行某些操作。
  • 更好的会话处理(IMHO)。您可以使用会话本身做更多的事情tmux。您可以轻松切换、重命名等,并且可以在会话之间移动和共享窗口。它还有一个不同的模型,每个用户都有一个控制其会话的服务器,客户端会连接到该服务器。这样做的缺点是,如果服务器崩溃,您将失去一切;不过,我从来没有遇到过服务器崩溃的情况。
  • tmux似乎开发得更积极。更新相当频繁,你可以根据此常见问题解答提交错误报告或功能请求并在几天内得到答复。但是,正如评论中指出的那样,screen缺乏开发主要是因为它很稳定。它基本上已经完成了,而不是被抛弃了。话虽如此,如果它现在做不到某件事,它可能永远都做不到,而且长期存在的问题不太可能得到解决。(不过,公平地说,垂直分割是screen我第一次回答这个问题时没有的一个功能,现在有了。)

这些是我个人从 screen 切换到 tmux 的一些原因。这并不是说 screen 没有优势,但恕我直言,自从切换以来,我想不出有什么我错过了什么。另一个由付费书呆子提供的答案有更客观的优点/缺点列表,不过根据传闻,我会说我从来没有遇到过那里提到的崩溃或错过按键的问题。(这些可能与操作系统有关。我只在 Linux 和 FreeBSD 上使用过它。)

答案2

会议视窗可以拆卸并重新安装。窗户可能包含一个或多个窗格。例如配置,请查看这里这里

tmux

  • 优点
    • 可以将按键发送到其他窗格,有点像 IDE
    • 简单的按键绑定——通过正确的配置,你将能够轻松地使用 Vim 或 Screen
    • 内置 Vim-ish 和 Emacs-ish 绑定
    • 良好的布局管理,很像平铺窗口管理器
    • Unicode 似乎只适用于现代终端
    • 修复了一些终端问题TERM=tmux
  • 缺点
    • 缓慢 - 不确定原因,但按键似乎很慢,不再有缓慢的问题
    • 多路复用强制将整个会话的宽度和高度设置为最小的连接终端
    • 在 Mac OS X 上多次崩溃,丢失整个会话
    • 升级后在 Linux 上出现故障,我无法重新连接到旧会话
    • 偶尔会错过命令按键 -^A ^[需要尝试几次才能进入复制模式
    • 无法将窗格从一个窗口移动到另一个窗口,使用join-pane命令修复
    • 终端宽度改变(窗口大小调整)后,无行展开(或“重新排列”或“重新换行”)

GNU 屏幕

  • 优点
    • 极其稳定(v1.0 于 1987 年发布)
    • 修复了一些终端问题TERM=screen
    • 内置 Emacs-ish 绑定
    • 易于移动和控制水平窗格
    • 多路复用时,任何连接的终端都可以调整窗格大小
  • 缺点
    • 没有补丁就没有垂直分割(Ubuntu 除外)较新版本的屏幕支持垂直分割
    • 分离时窗格分割丢失,使用布局保存默认命令修复
    • 要让 Unicode 发挥作用,需要一点技巧和决心
    • 复杂且令人困惑的状态行配置

答案3

screen 的优点:在 Linux 和 Solaris 上,它几乎是开箱即用的。当你需要在平台之间来回切换时,不用费心切换上下文,这真是太好了。

我确信您可以在任何平台上编译 tmux,但有时您只有足够的访问权限来使用屏幕,但实际的系统管理员并不想添加任何不是绝对必要的软件。

答案4

我已经更换了GNU 屏幕tmux在所有用例中,除了一个用例——当我需要超级终端相当于连接到串行端口。正如 Aaron Toponce 在他的文章中指出的那样“使用 GNU Screen 连接串行空调制解调器”, 这tmux 常见问题解答状态:

screen 具有内置串行和 telnet 支持;这很臃肿并且不太可能添加到 tmux 中。

我的典型tmux用例是结合创建多窗格和多窗口开发会话多路复用器. 如果你想学习tmux我建议你买 Brian P. Hogan 的书,tmux:高效的无鼠标开发

相关内容