浏览我发现的有关tmux的问题(我通常使用GNU Screen)。我的问题是它们各自的优缺点。特别是我对tmux知之甚少。

评论

在superuser.com/questions/236158/tmux-vs-screen
上也进行了讨论
从下面的好答案中可以看出,它们不是基于观点的。

@reinierpost-似乎这里的许多人都太过急于以“主要基于意见”来结束问题。但是,我们可以投票决定重新开放。

尽管这个问题是一个比较问题,但我认为赞成和反对的论点是足够客观的,因此在这里固执己见的拒绝理由还行。您可以检查链接的SU问题,答案还可以。

@AjayBrahmakshatriya显然,“这是膨胀”之类的答案是意见。但是一个清单,“ X可以...,...和..,而Y可以...和...”是客观的。我认为可以从该答案中删除“这很膨胀”(考虑到它的得分,我没有这样做,但我也没有投票给他们)。

#1 楼

从他们的网站:



tmux与GNU屏幕有何不同?它还能提供什么功能?

tmux相对于屏幕具有几个优点: >可以同时附加到多个会话,并可以从多个
客户端(终端)查看,也可以在同一
tmux服务器内的各个会话之间自由移动; ,具有相同的语法
,无论是交互使用,作为键绑定还是从外壳程序使用;
可从外壳程序轻松编写脚本;
多个粘贴缓冲区;
选择vi或emacs键布局;
限制窗口大小的选项;
更有用的状态行语法,能够显示特定命令的输出的第一行

a

仍然有一些功能屏幕包括tmux省略:


内置的串行和telnet支持。这是膨胀的,不太可能添加到tmux中;
更广泛的平台支持,例如IRIX和HP-UX,以及奇数终端。



评论


该死的...现在我想尝试tmux ...只是由于缺少vi键绑定,屏幕对我不起作用。

– xenoterracide
2010年8月17日在20:43

vi或emacs快捷键绑定是否只是意味着tmux附带了两个方便的默认设置?可以使用rc文件完全重新配置屏幕的键绑定。

– jw013
2011-12-27 19:27

您可以定义任意键绑定。请参阅:openbsd.org/cgi-bin/…

–nisc
2011-12-27 20:46



当他们谈论实现时,他们最终应该在tmux的vim中使用解决愚蠢的错误。

–吗?
2014年2月19日在10:17

#2 楼

一个区别是,当将多个终端连接到一个会话时,两者的行为方式不同。使用tmux,所有连接的终端都可以看到相同的东西。

假设您有两个连接到单个tmux会话的终端。如果您在一个终端中键入^ B 1,则另一终端也将切换到窗口1。

这是基于我对tmux 1.2的经验;我看到1.3退出了,但是我在变更日志中没有注意到有关此行为更改的任何信息。原始的tmux会话称为0(默认设置),然后可以执行tmux new-session -t 0)以启动一个新的独立会话,该会话连接到同一组窗口,然后可以拥有自己的视图。

评论


这是一个有趣的区别。我确信对于不同的用例,每种方法都有其优势。 (tmux的优势:附着在同一tmux会话上的两个人(例如,用于远程配对编程总是会看到同一件事;屏幕的优势:出于两个不同的目的而从两个地方附着到同一屏幕的一个人可以有两个不同的视图,即使同时使用) (例如,并排(操作系统/窗口管理器级别)窗口)。)

– lindes
2011-2-22在10:10

如果您原来的tmux会话称为“ 0”(默认值),则可以执行“ tmux new-session -t 0”)以启动一个新的独立会话,该会话连接到同一组窗口,然后可以拥有自己的视图。我很确定这可以在1.2 / 1.3中恢复,但是我记不起来了。

–Cos
2012年1月26日21:05

@cos这正是我一直在寻找的技巧。非常感谢。我希望我能对你投两次票:)我现在每次都开始重新附加“ tmux new-session -t 0”。

– jrwren
2012年4月2日14:06

@Cos已添加“从1.0到1.1,2009年11月5日”。 @jrwren该命令可以缩短tmux new -t 0。

–user285259
17年12月11日,0:19



#3 楼

与GNU屏幕相比,tmux相当新。优点/缺点是一个棘手的问题,因为两个程序都解决了大约相同的问题。 tmux是BSD许可的,而screen是GNU GPL。这对某些人来说很重要。

屏幕(在Linux上)目前更具代表性,也就是说,与tmux相比,您更有可能在给定的Linux机器上找到它。但是,tmux在基本安装中已包含在OpenBSD中。

这两个程序都允许您做同一件事,尽管事情的状态要复杂得多。两者之间的切换并不是太复杂,因为许多屏幕功能也已进入tmux,尽管如果您是任一方的高级用户,则切换到另一方时可能会发现一些挫败感。 br />与任何程序一样,它实际上取决于您的需求,并且您会更满意。试一试,看看它们搭配得不错。

有关tmux的更多信息,请参见https://tmux.github.io/

#4 楼

我想我只想提一下可用于屏幕的byobu包装器,它可以使开箱即用的包装变得更好。我不知道这样的东西是否可用于tmux,但是byobu使我的.screenrc仅有几行。查看有关byobu和屏幕截图的快速文章。 byobu的项目页面描述了该名称,该名称源自日语中的装饰性多面板屏风,该屏风可用作折叠式隔断。另外,仅运行它就不会损害您的屏幕设置,因此您可以放心地尝试它。使用byobu启动会话后,您可以使用screen自由地重新连接到该会话,并且仍然不会丢失byobu所做的任何自定义操作(因此只能用于初始调用)。它的两个主要优点是:


通过带有一些有用信息的状态栏来启动屏幕
提供许多快捷键来更容易地访问屏幕功能

我没有使用键绑定部分,但肯定会发现状态栏很有用。我认为大多数答案已被现有答案提及。

评论


如果您总结byobu的功能,例如带有功能列表的答案,您的答案将更有用。

–吉尔斯'所以-不再是邪恶的'
2011年4月21日在7:24

好的,我在byobu上添加了更多信息,但是它就像运行命令并自己找到(菜单驱动)一样简单,因为它不会影响您现有的屏幕设置。我将答案作为社区Wiki,因此可以随时对其进行编辑。

–haridsv
2011年4月21日在18:58



byobu似乎也实际上支持tmux,至少在最新版本中。

– Darel
2012年6月16日15:32

#5 楼

我使用的最大区别在于,在Gnu Screen中您只能水平分割帧,而在Tmux中您可以水平和垂直分割。这是一个移动的目标,尽管正如我在这里告诉我的那样,垂直分割正在使其进入屏幕。

评论


您也可以在屏幕上垂直分割。 mmm ...至少可以在默认的Ubuntu 10.10屏幕安装中使用。

–斯坦
2011年2月6日在22:58

@andre有一个长期存在的用于屏幕垂直分割的补丁程序...从未合并到上游...但是我敢肯定,许多发行版都在应用它。

– xenoterracide
2011-3-27 14:05

#6 楼

Drench提出了一个有趣的观点-将两次连接到同一会话的默认行为在tmux中有所不同。但是,如果您想附加两次并对该会话具有独立的窗口视图,请使用

tmux new-session -t <session name>


启动tmux,这将为您创建一个新会话,并且附加现有会话中的窗口。如果您没有为第一个会话命名,则可以使用“ rename-session”添加一个。

#7 楼

screen的一大弊端是尚未积极开发。该错误页面在5年内有近200个未分配的项目。

#8 楼

tmux较新,具有更多功能。

我发现正确的使用取决于正确的设置。

我使用vi(vim)进行编辑(在轨道上进行红宝石)一些设置程序可使它正常运行。

这是我的〜/ .tmux.conf文件,其中有很多有用的设置:

bind r source-file ~/.tmux.conf \; display "Reloaded!"  # Reload with ctrl-r
set -g prefix C-a         # prefix from ctrl-b to ctrl-a
unbind C-b                # allow ctrl-b for other things
set -sg escape-time 1     # quicker responses
bind C-a send-prefix      # Pass on ctrl-a for other apps
set -g base-index 1        # Numbering of windows
setw -g pane-base-index 1  # Numbering of Panes
bind \ split-window -h    # Split panes horizontal
bind - split-window -v    # Split panes vertically
bind h select-pane -L     # Switch to Pane Left
bind j select-pane -D     # Switch to Pane Down
bind k select-pane -U     # Switch to Pane Up
bind l select-pane -R     # Switch to Pane Right
bind -r C-h select-window -t :-  # Quick Pane Selection
bind -r C-l select-window -t :+  # Quick Pane Selection
bind -r H resize-pane -L 5       # Switch to Pane Left
bind -r J resize-pane -D 5       # Switch to Pane Down
bind -r K resize-pane -U 5       # Switch to Pane Up
bind -r L resize-pane -R 5       # Switch to Pane Right
setw -g mode-mouse off           # Mouse Off
set -g mouse-select-pane off     # Mouse Off  
set -g mouse-resize-pane off     # Mouse Off
set -g mouse-select-window off   # Mouse Off
setw -g monitor-activity on      # Activity Alerts
set -g visual-activity on
set -g status-fg white           # Status line Colors
set -g status-bg black
setw -g window-status-fg cyan    # Window list color
setw -g window-status-bg default
setw -g window-status-attr dim
setw -g window-status-current-fg white     # Active Window Color
setw -g window-status-current-bg red
setw -g window-status-current-attr bright
set -g pane-border-fg green      # Pane colors
set -g pane-border-bg black 
set -g pane-active-border-fg white 
set -g pane-active-border-bg yellow
set -g message-fg white          # Command/Message Line.
set -g message-bg black
set -g message-attr bright
set -g status-left-length 40     # Status Line, left side
set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
set -g status-utf8 on            # Status Line, right side
set -g status-right "-------"
set -g status-interval 60        # frequency of status line updates
set -g status-justify centre     # center window list
setw -g mode-keys vi             # vi keys to move 
unbind v                         # Open panes in same directory as tmux-panes script
unbind n
bind v send-keys " ~/tmux-panes -h" C-m
bind n send-keys " ~/tmux-panes -v" C-m
unbind Up                        # Maximizing and Minimizing...
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"


评论


Tmux较新,但是“更多功能”意味着它至少与屏幕具有同等的功能-并非如此-除了其他地方提到的内容之外,tmux的多用户支持也严重缺乏。没有ACL或状态信息,通常,它显示了tmux的新颖性,因为您可以做的事情并不十分优美。

–半
2013年1月22日18:46



很高兴知道。我现在已经使用了一年,虽然一点匈牙利语可能会有所帮助,但我没有注意到有必要进行抛光。表示法是。好的坏双关;)之前没有使用屏幕,所以没有注意到所提到的问题。现在发现切换到屏幕并失去新功能将变得更加困难。

–迈克尔·杜兰特(Michael Durrant)
13年1月22日在21:08



#9 楼

我会随意添加一个区别:

tmux是基于ncurses的,而screen不会绘制其他元素。如果有人使用支持滚动的终端仿真器,则将使用屏幕而不是tmux滚动(至少在默认配置下)。搜索和相似特征也一样。

评论


我从来没有像...曾经滚动过屏幕? :/

–mike3996
2011-3-15在11:10

是的,我的TE支持滚动并使其中断屏幕...我必须与屏幕一起滚动。 -1似乎不正确。

– xenoterracide
2011-3-27 14:06



@xenoterracide:嗯。您部分正确。某些发行版/系统(旧的Gentoo)上的屏幕不会损坏它,而在某些(新的Ubuntu)上却能。我不知道为什么。

– Maciej Piechotka
2011-3-28在18:54

可能是补丁...我们都是5.5美分的系统

– xenoterracide
2011-3-29在9:36

#10 楼

我很难获得支持utf-8和256色的屏幕,但是tmux开箱即用。