Mac*_*tka 202 gnu-screen terminal-multiplexer tmux
浏览我发现的有关 tmux 的问题(我通常使用 GNU Screen)。我的问题是它们各自的优缺点。尤其是我找不到太多关于 tmux 的信息。
小智 128
从他们的网站:
- tmux 与 GNU 屏幕有何不同?它还能提供什么?
与屏幕相比,tmux 具有以下几个优点:
- 明确定义的客户端-服务器模型:窗口是独立的实体,可以同时附加到多个会话并从多个客户端(终端)查看,也可以在同一 tmux 服务器内的会话之间自由移动;
- 一致的、有据可查的命令界面,无论是交互使用、作为键绑定使用还是从 shell 使用,都具有相同的语法;
- 很容易从 shell 编写脚本;
- 多个粘贴缓冲区;
- 选择 vi 或 emacs 键布局;
- 限制窗口大小的选项;
- 更有用的状态行语法,能够显示特定命令的第一行输出;
- 一个更干净、现代、易于扩展、获得 BSD 许可的代码库。
仍然有一些特性 screen 包括 tmux 省略:
- 内置串行和远程登录支持;这是膨胀的,不太可能被添加到 tmux;
- 更广泛的平台支持,例如 IRIX 和 HP-UX,以及奇数终端。
小智 48
一个区别在于当多个终端连接到单个会话时两者的行为方式。
使用屏幕,每个附加终端的视图都独立于其他终端。使用 tmux,所有连接的终端都看到相同的东西。
假设您有两个终端连接到单个 tmux 会话。如果您^B在一个终端中键入1,另一个终端也会切换到窗口 1。
当您将两个终端连接到一个 screen 会话,并且您^A在其中输入1 时,它对另一个终端没有影响。
这是基于我使用 tmux 1.2 的经验;我看到 1.3 已发布,但我没有注意到更改日志中有关此行为更改的任何内容。
如果您的原始 tmux 会话被调用0(默认),那么您可以执行tmux new-session -t 0) 以启动连接到同一组窗口的新独立会话,然后该会话可以拥有自己的视图。
gab*_*be. 25
与 GNU screen 相比,tmux 是相当新的。优点/缺点是一个棘手的问题,因为这两个程序解决了大致相同的问题。tmux 是 BSD 许可的,而 screen 是 GNU GPL。这对某些人来说很重要。
screen 目前更多代表(在 Linux 上),也就是说,与 tmux 相比,您更有可能在给定的 linux 机器上找到它。然而,tmux 在 OpenBSD 上更具有代表性,因为它作为基本安装的一部分包含在内。
这两个程序都允许你做同样的事情,尽管事情的状态比那要复杂一些。在两者之间切换并不太复杂,因为许多屏幕功能也已进入 tmux,但如果您是其中一个的高级用户,则在切换到另一个时可能会遇到一些挫折。
与任何程序一样,这实际上取决于您的需求,以及您更喜欢哪种。试一试,看看你和谁玩得很好。
有关 tmux 的更多信息,请参阅https://tmux.github.io/
har*_*dsv 19
我想我只想提一下byobu可用于 screen的包装器,它使开箱即用变得更好。我不知道这样的东西是否可用于 tmux,但byobu让我的 .screenrc 只有几行。查看这篇关于 byobu 和屏幕截图的快速文章。byobu 的项目页面描述了源自日语的装饰性多面板屏风的名称,该屏风用作折叠式房间隔板。此外,仅运行它不会损害您的屏幕设置,因此您可以放心尝试。开始会话后,byobu您可以使用它自由地重新连接到它,screen并且仍然不会丢失任何已完成的自定义byobu(因此仅将其用于初始调用)。它的两个主要优点是:
我没有使用键绑定部分,但肯定发现状态栏很有用。
此外,您可能会发现Screen Vs tmux链接很有用。我认为现有答案中已经提到了大部分内容。
Eli*_*rey 17
我使用中最大的不同是在 Gnu Screen 中你只能水平分割帧,而在 Tmux 中你可以水平和垂直分割。这是一个移动的目标,但正如我在这里所说的,垂直分割正在使它进入 screen。
除此之外,事情就平淡了。
小智 12
Drench 提出了一个有趣的观点——在 tmux 中连接两次到同一个会话的默认行为是不同的。但是,如果您想附加两次并在该会话中拥有独立的窗口视图 - 启动 tmux
tmux new-session -t <session name>
Run Code Online (Sandbox Code Playgroud)
这将为您创建一个新会话,并附加现有会话中的窗口。如果您没有为您的第一个会话命名,您可以使用“重命名会话”添加一个。
我将冒昧地添加一个差异:
tmux 基于 ncurses 而 screen 不绘制额外的元素。如果有人使用支持滚动的终端模拟器,他将使用屏幕滚动而不是使用 tmux(至少在默认配置中)。同样的事情适用于搜索和类似的功能。
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"
Run Code Online (Sandbox Code Playgroud)