Экран tmux vs. GNU [закрыто]

194

Просматривая вопросы, которые я нашел о tmux (я обычно использовал экран GNU). Мой вопрос в том, каковы плюсы и минусы каждого из них. Особенно я не мог найти много о Tmux.

Мацей Печотка
источник
9
Также обсуждается на сайте superuser.com/questions/236158/tmux-vs-screen
Ллойд Дьюольф,
5
Как видно из хороших ответов ниже, они не основаны на мнении.
reinierpost
@reinierpost - кажется, что многие люди здесь слишком быстры, чтобы закрывать вопросы как «в первую очередь основанные на мнении». Тем не менее, мы можем проголосовать, чтобы открыть.
MountainX
Хотя этот вопрос является вопросом сравнения, я думаю, что аргументы «за» и «против» достаточно объективны, и поэтому близкая причина самоуверенности здесь не годится. Вы можете проверить связанный вопрос SU, ответы довольно хорошо.
user259412

Ответы:

122

С их сайта :

  • Чем tmux отличается от экрана GNU? Что еще он предлагает?

tmux предлагает несколько преимуществ перед экраном:

  • четко определенная модель клиент-сервер: окна являются независимыми объектами, которые могут быть присоединены одновременно к нескольким сеансам и просмотрены с нескольких клиентов (терминалов), а также свободно перемещаться между сеансами на одном и том же сервере tmux;
  • согласованный, хорошо документированный командный интерфейс с тем же синтаксисом, используется ли он в интерактивном режиме, в качестве привязки ключа или из оболочки;
  • легко скриптируется из оболочки;
  • несколько буферов вставки;
  • выбор раскладок ключей vi или emacs;
  • возможность ограничить размер окна;
  • более удобный синтаксис строки состояния с возможностью отображения первой строки вывода конкретной команды;
  • более чистая, современная, легко расширяемая, BSD-лицензированная кодовая база.

На экране есть еще несколько функций, которые tmux пропускает:

  • встроенная поддержка последовательных и Telnet; это вздор и вряд ли будет добавлен в tmux;
  • более широкая поддержка платформ, например IRIX и HP-UX, а также для нечетных терминалов.
NISC
источник
4
блин ... теперь я хочу попробовать tmux ... только потому, что у меня не работает screen из-за отсутствия сочетаний клавиш vi.
ксенотеррацид
1
Означает ли сочетание клавиш vi или emacs, что tmux поставляется с двумя удобными наборами значений по умолчанию? Можно полностью перенастроить сочетания клавиш экрана с помощью его файла rc.
jw013
Вы можете определить произвольные привязки клавиш. См: openbsd.org/cgi-bin/...
NISC
Когда они говорят о реализации, они должны , наконец , решить эту глупую ошибку с <C-Left>в vimв tmux.
лет»
45

Одно из различий заключается в том, как они действуют, когда несколько терминалов подключены к одному сеансу.

С экраном каждый подключенный терминал не зависит от других. С tmux все подключенные терминалы видят одно и то же.

Допустим, к одному сеансу tmux подключены два терминала. Если вы вводите ^B1 в один терминал, другой терминал также переключается в окно 1.

Когда к одному сеансу экрана подключены два терминала, и вы вводите ^A1 в один, это не влияет на другой терминал.

Это основано на моем опыте с tmux 1.2; Я вижу, что 1.3 вышел, но я ничего не заметил в журнале изменений об этом изменении поведения.

Если вам нравится поведение экрана и вы хотите его в tmux:

Если ваш исходный сеанс tmux называется 0(по умолчанию), то вы можете это сделать tmux new-session -t 0), чтобы запустить новый независимый сеанс, подключенный к тому же набору окон, который затем может иметь свое собственное представление.

пропитывать
источник
1
Это интересное различие. Я уверен, что у каждого из них есть свои преимущества для разных вариантов использования. (Преимущество tmux: два человека, подключенные к одному сеансу tmux, например, для дистанционного программирования пар, всегда будут видеть одно и то же; Преимущество экрана: один человек, подключенный к одному экрану из двух мест для двух разных целей, может иметь два разных представления, даже одновременно (с скажем, параллельные (OS / windowmanager-level) окна).)
Линдес
10
если ваш исходный сеанс tmux называется «0» (по умолчанию), то вы можете выполнить «tmux new-session -t 0»), чтобы запустить новый независимый сеанс, подключенный к тому же набору окон, который затем может иметь свой собственный Посмотреть. Я почти уверен, что это сработало еще в 1.2 / 1.3, но я не могу вспомнить на первый взгляд.
Cos
@ COS это именно тот совет, который я искал. Огромное спасибо. Я хотел бы проголосовать за вас дважды :) Теперь я начну каждый раз присоединяться к 'tmux new-session -t 0'.
jrwren
@Cos Это было добавлено "ОТ 1.0 ДО 1.1, 05 ноября 2009". @jrwren Команда может быть закорочена tmux new -t 0.
user285259
24

tmux довольно новый по сравнению с экраном GNU. Преимущества / недостатки - сложный вопрос, поскольку обе программы решают примерно одну и ту же проблему. tmux лицензируется BSD, а screen - GNU GPL. Это важно для некоторых людей.

На данный момент экран больше представлен (в Linux), то есть вы, скорее всего, найдете его на данной Linux-коробке, чем на tmux. Тем не менее, tmux больше представлен в OpenBSD, поскольку он включен как часть базовой установки.

Обе программы позволяют вам делать то же самое, хотя положение вещей немного сложнее, чем это. Переключение между ними не слишком сложно, так как большая часть функциональности экранов также вошла в tmux, хотя, если вы опытный пользователь любого из них, вы, вероятно, найдете некоторые разочарования при переходе на другой.

Как и в любой программе, она действительно зависит от ваших потребностей и того, что вам удобнее. Дайте им обоим попробовать и посмотреть, с чем вы играете хорошо.

Для получения дополнительной информации о tmux см. Https://tmux.github.io/

Гейб.
источник
17

Самым большим отличием моего использования было то, что в Gnu Screen вы можете разделять кадры только по горизонтали, тогда как в Tmux вы можете разделять как по горизонтали, так и по вертикали. Это своего рода движущаяся цель, хотя, как я здесь сказал, вертикальное разделение пробивается на экран .

Кроме того, все о квартире.

Эли Фрей
источник
10
Вы также можете разделить по вертикали на экране. ммм ... чтобы он не работал при установке экрана по умолчанию в Ubuntu 10.10.
Стэнн
4
@andre существует давний патч для вертикального разделения экрана ... который никогда не был включен в апстрим ... но я уверен, что многие дистрибутивы применили его.
ксенотеррацид
17

Я подумал, что упомяну об byobuобёртке, доступной для экрана, которая делает его намного лучше прямо из коробки. Я не знаю, доступно ли что-то подобное для tmux, но byobuмой .screenrc сделал только несколько строк. Проверьте эту быструю статью о бёбу и скриншотах. Страница проекта для byobu описывает название, которое происходит от японского термина декоративных многопанельных экранов, которые служат в качестве разделителей складных комнат. Кроме того, просто запустить его не повредит ваши настройки экрана, так что вы можете спокойно попробовать. После того, как вы начнете сеанс с ним, byobuвы можете свободно подключиться к нему, используя при этом, screenи при этом не терять никаких настроек, выполненных с помощью byobu(поэтому используйте его только для первоначального вызова). Два главных преимущества этого:

  • Запускает экран с парой строк состояния с полезной информацией
  • Обеспечивает множество сочетаний клавиш для более удобного доступа к функциям экрана

Я не использую часть сочетаний клавиш, но определенно считаю строки состояния полезными.

Также вам может пригодиться ссылка Screen Vs tmux . Я думаю, что большинство из них уже упоминалось в существующих ответах.

haridsv
источник
Ваш ответ был бы более полезен, если бы вы суммировали функции byobu, как этот ответ с его списком функций.
Жиль
Хорошо, я добавил больше информации byobu, но это так же просто, как запустить команду и найти ее для себя (она управляется меню), так как она не портит ваши существующие настройки экрана. И я сделал свой ответ в вики сообщества, так что не стесняйтесь редактировать его.
haridsv
1
Похоже, что byobu действительно поддерживает tmux, по крайней мере, в более поздних версиях.
Дараэль
12

Дренч поднимает интересный вопрос - поведение по умолчанию при двойном подключении к одному и тому же сеансу в tmux отличается. Однако, если вы хотите присоединиться дважды и иметь независимый вид окон в этом сеансе - запустите tmux с

tmux new-session -t <session name>

Это создаст для вас новый сеанс и присоединит окна к уже существующему сеансу. Если вы не назвали свой первый сеанс, вы можете добавить его с помощью «переименовать сеанс».

Рикард Англеруд
источник
12

Один большой screenнедостаток в том, что он активно не развивается. На страницах ошибки есть близко к 200 нераспределенным пунктам вернуться в течение 5 лет.

tmux также есть некоторые открытые вопросы, но гораздо меньше, и более активно поддерживается.

Гарольд
источник
8

Tmux является более новым и несколько дополнительных функций.

Я обнаружил, что хорошее использование зависит от хорошей настройки.

Я использую vi (vim) для редактирования (ruby на рельсах), и есть несколько настроек, чтобы это работало хорошо.

Вот мой файл ~ / .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 остро отсутствует. Нет acls или status, и в целом это показывает новизну tmux в том, что то, что вы можете сделать, не очень хорошо отработано.
Полу
Это хорошо знать. Я уже пользуюсь им в течение года и не заметил необходимости в полировке, хотя маленький венгр может помочь. Запись это. ок, плохой каламбур;) До этого не использовал экран, поэтому не замечал упомянутых проблем. Было бы сложнее переключиться на экран и потерять новые функции сейчас.
Майкл Даррант
8

Я позволю себе добавить одно отличие:

tmux основан на ncurses, в то время как screen не рисует дополнительные элементы. Если кто-то использует эмулятор терминала, который поддерживает прокрутку (и), он получит прокрутку с экрана, но не с tmux (по крайней мере, в конфигурации по умолчанию). То же самое относится к поиску и аналогичным функциям.

Мацей Печотка
источник
2
У меня не было прокрутки с экрана, как ... никогда? : /
unperson325680
да, мой TE поддерживает прокрутку и экран разбивает его ... Я должен прокрутить с экрана. -1 не кажется точным.
ксенотеррацид
@xenoterracide: Хм. Вы частично правы. Экран в некоторых дистрибутивах / системах (более старых Gentoo) не ломает его, в то время как в некоторых (новых Ubuntu) он не работает. Понятия не имею почему.
Мачей Печотка
возможно патч ... у нас все 5,5 центовые системы
ксенотеррацид
6

У меня были проблемы с получением экрана с поддержкой utf-8 и 256 цветов, но tmux работал из коробки.

zvolkov
источник