it-swarm.cn

tmux与GNU屏幕

浏览问题 我发现了关于tmux的信息(我通常使用GNU屏幕)。我的问题是它们各自的优缺点。尤其是我找不到关于tmux。

196
Maciej Piechotka

其网站

  • Tmux与GNU屏幕)有什么不同?它还提供什么?

与屏幕相比,tmux具有几个优点:

  • 明确定义的客户端-服务器模型:窗口是独立的实体,可以同时连接到多个会话,并可以从多个客户端(终端)查看,也可以在同一tmux服务器中的会话之间自由移动;
  • 一个一致的,有据可查的命令界面,具有相同的语法,无论是交互使用,作为键绑定还是从Shell使用;
  • 可从Shell轻松编写脚本;
  • 多个粘贴缓冲区;
  • 选择vi或emacs键布局;
  • 限制窗口大小的选项;
  • 状态行语法更有用,能够显示特定命令输出的第一行;
  • 更干净,现代,易于扩展的BSD许可代码库。

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

  • 内置的串行和telnet支持;这很肿,不太可能添加到tmux中;
  • 更广泛的平台支持(例如IRIX和HP-UX)以及奇数终端。
124
nisc

一个区别是当多个终端连接到一个会话时,两者的行为方式不同。

通过屏幕,每个连接的终端的视图都彼此独立。使用tmux,所有连接的终端都可以看到相同的东西。

假设您有两个连接到单个tmux会话的终端。如果您输入 ^B 1进入一个端子,另一端子也切换到窗口1。

当您有两个终端连接到一个屏幕会话,并且您键入 ^A 1合一,对另一终端无效。

这是基于我对tmux 1.2的经验;我看到1.3已发布,但我在变更日志中没有注意到有关此行为更改的任何内容。

如果您喜欢屏幕行为并希望在tmux中使用它:

如果您原来的tmux会话称为0(默认设置),那么您可以做tmux new-session -t 0)以启动一个新的独立会话,该会话连接到同一组窗口,然后它们可以拥有自己的视图。

45
drench

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

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

这两个程序都允许您做同一件事,尽管事情的状态要复杂得多。两者之间的切换并不是太复杂,因为许多屏幕功能也已进入tmux,尽管如果您是任一方的高级用户,则切换到另一方时可能会发现一些挫败感。

与任何程序一样,它实际上取决于您的需求,并且您会更满意。尝试一下,看看它们与您的游戏效果如何。

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

25
gabe.

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

  • 从带有一些有用信息的状态栏开始屏幕
  • 提供许多按键绑定,以更轻松地访问屏幕功能

我没有使用键盘绑定部分,但是肯定会发现状态栏很有用。

您也可能会发现 Screen Vs tmux 链接很有用。我认为大多数答案已被现有答案提及。

18
haridsv

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

除此之外,一切都是平坦的。

17
Eli Frey

screen的一大弊端是它没有得到积极开发。 错误页面 在过去5年中有近200个未分配的项目。

tmux也有一些未解决的问题,但要少得多,并且得到了更积极的支持。

12
Harold

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

tmux new-session -t <session name>

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

12
Rikard Anglerud

tmux是较新的功能。

我发现良好的使用取决于良好的设置。

我使用vi(vim)进行编辑(Ruby on Rails),并做了一些设置以使其正常运行。

这是我的〜/ .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"
8
Michael Durrant

我会随意添加一个区别:

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

8
Maciej Piechotka

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

6
zvolkov