tmux 是否具有 screen 的所有功能?以及 screen 缺少哪些功能?

tmux 是否具有 screen 的所有功能?以及 screen 缺少哪些功能?

我正在考虑从屏幕切换到 tmux,但我已经投入了大量时间开发广泛的 .screenrc,并且我不想在花费大量时间将其移植到 tmux 后发现 tmux 无法做一些对我来说很重要的事情。

我在网上查看了对这两者的一些比较,但没有一个文章深入探讨或回答许多(对我而言)重要的问题,这些问题可以归结为两个问题:

  • screen 能做而 tmux 不能做的重要的事有哪些?
  • tmux 能做而 screen 不能做的一些重要的事情吗?

(客户端-服务器架构很好,但没有提供任何新的能力就我所见。许可证显然更好。更小更精简显然很好,但对我来说不会改变游戏规则。)

由于这两个问题非常广泛,让我举一些具体的例子:

  • tmux 有完整的命令历史记录吗?(对于发送给 tmux 本身的命令,而不是 shell 命令。这是 screen 所缺少的:我怎样才能返回(GNU)屏幕命令历史记录?(不是 shell 命令历史记录!)
  • 我想我可以将键绑定到 tmux 命令?
  • 我认为我的 tmux 配置文件可以获取其他文件?
  • 我可以将按键绑定到源命令吗,以便我可以轻松动态地更改我的配置?
  • tmux 有 ACL 设置吗?(我实际上从来不需要这些屏幕,但知道它们在那里还是很好的。)
  • tmux 可以打开默认窗口吗?(例如 screen -t somename 1 ssh someserver)

我可以自己寻找这些具体问题的答案,但它们只是 2 个较大问题的例子,我也想听听那些不一定适合我的任何例子的较大问题的答案。如果 tmux 缺少某些东西,我花了很多时间切换后才发现,这是完全有可能的,而这正是我想要避免的。谢谢!

答案1

我不知道您所有问题的答案,但我会尽力。

对我来说最大的问题是在 gnu-screen 中,拆分会拆分您的视图,以便您可以查看不同的屏幕(例如,屏幕 1 和 2,甚至屏幕 1 和 1)。在 tmux 中,拆分会拆分屏幕本身,因此我可以拥有屏幕 1 和 2,但屏幕 1 有 4 个拆分(4 个不同的终端)。如果没有补丁,您无法在 gnu-screen 中做到这一点。

您当然可以将按键绑定到 tmux 命令。当我从 gnu-screen 切换到 tmux 时,我重新设置了所需的内容,使其更像屏幕,例如,

set -g prefix C-a 
setw -g mode-keys vi
unbind C-b 
bind a send-prefix
bind v split-window -v
bind h split-window -h
bind S split-window
bind Escape copy-mode
bind C-a last-window
bind C-d detach
bind A command-prompt "rename-window %%"

tmux 还可以使用 tmux.conf 打开默认窗口,如下所示:

new -d -n "window1"
neww -d -n "window2"
neww -d -n "window3"

答案2

相关内容