Просматривая вопросы, которые я нашел о tmux (я обычно использовал экран GNU). Мой вопрос в том, каковы плюсы и минусы каждого из них. Особенно я не мог найти много о Tmux.
Просматривая вопросы, которые я нашел о tmux (я обычно использовал экран GNU). Мой вопрос в том, каковы плюсы и минусы каждого из них. Особенно я не мог найти много о Tmux.
Ответы:
С их сайта :
- Чем tmux отличается от экрана GNU? Что еще он предлагает?
tmux предлагает несколько преимуществ перед экраном:
- четко определенная модель клиент-сервер: окна являются независимыми объектами, которые могут быть присоединены одновременно к нескольким сеансам и просмотрены с нескольких клиентов (терминалов), а также свободно перемещаться между сеансами на одном и том же сервере tmux;
- согласованный, хорошо документированный командный интерфейс с тем же синтаксисом, используется ли он в интерактивном режиме, в качестве привязки ключа или из оболочки;
- легко скриптируется из оболочки;
- несколько буферов вставки;
- выбор раскладок ключей vi или emacs;
- возможность ограничить размер окна;
- более удобный синтаксис строки состояния с возможностью отображения первой строки вывода конкретной команды;
- более чистая, современная, легко расширяемая, BSD-лицензированная кодовая база.
На экране есть еще несколько функций, которые tmux пропускает:
- встроенная поддержка последовательных и Telnet; это вздор и вряд ли будет добавлен в tmux;
- более широкая поддержка платформ, например IRIX и HP-UX, а также для нечетных терминалов.
<C-Left>
в vim
в tmux
.
Одно из различий заключается в том, как они действуют, когда несколько терминалов подключены к одному сеансу.
С экраном каждый подключенный терминал не зависит от других. С tmux все подключенные терминалы видят одно и то же.
Допустим, к одному сеансу tmux подключены два терминала. Если вы вводите ^B1 в один терминал, другой терминал также переключается в окно 1.
Когда к одному сеансу экрана подключены два терминала, и вы вводите ^A1 в один, это не влияет на другой терминал.
Это основано на моем опыте с tmux 1.2; Я вижу, что 1.3 вышел, но я ничего не заметил в журнале изменений об этом изменении поведения.
Если ваш исходный сеанс tmux называется 0
(по умолчанию), то вы можете это сделать tmux new-session -t 0
), чтобы запустить новый независимый сеанс, подключенный к тому же набору окон, который затем может иметь свое собственное представление.
tmux new -t 0
.
tmux довольно новый по сравнению с экраном GNU. Преимущества / недостатки - сложный вопрос, поскольку обе программы решают примерно одну и ту же проблему. tmux лицензируется BSD, а screen - GNU GPL. Это важно для некоторых людей.
На данный момент экран больше представлен (в Linux), то есть вы, скорее всего, найдете его на данной Linux-коробке, чем на tmux. Тем не менее, tmux больше представлен в OpenBSD, поскольку он включен как часть базовой установки.
Обе программы позволяют вам делать то же самое, хотя положение вещей немного сложнее, чем это. Переключение между ними не слишком сложно, так как большая часть функциональности экранов также вошла в tmux, хотя, если вы опытный пользователь любого из них, вы, вероятно, найдете некоторые разочарования при переходе на другой.
Как и в любой программе, она действительно зависит от ваших потребностей и того, что вам удобнее. Дайте им обоим попробовать и посмотреть, с чем вы играете хорошо.
Для получения дополнительной информации о tmux см. Https://tmux.github.io/
Самым большим отличием моего использования было то, что в Gnu Screen вы можете разделять кадры только по горизонтали, тогда как в Tmux вы можете разделять как по горизонтали, так и по вертикали. Это своего рода движущаяся цель, хотя, как я здесь сказал, вертикальное разделение пробивается на экран .
Кроме того, все о квартире.
Я подумал, что упомяну об byobu
обёртке, доступной для экрана, которая делает его намного лучше прямо из коробки. Я не знаю, доступно ли что-то подобное для tmux, но byobu
мой .screenrc сделал только несколько строк. Проверьте эту быструю статью о бёбу и скриншотах. Страница проекта для byobu описывает название, которое происходит от японского термина декоративных многопанельных экранов, которые служат в качестве разделителей складных комнат. Кроме того, просто запустить его не повредит ваши настройки экрана, так что вы можете спокойно попробовать. После того, как вы начнете сеанс с ним, byobu
вы можете свободно подключиться к нему, используя при этом, screen
и при этом не терять никаких настроек, выполненных с помощью byobu
(поэтому используйте его только для первоначального вызова). Два главных преимущества этого:
Я не использую часть сочетаний клавиш, но определенно считаю строки состояния полезными.
Также вам может пригодиться ссылка Screen Vs tmux . Я думаю, что большинство из них уже упоминалось в существующих ответах.
byobu
, как этот ответ с его списком функций.
byobu
, но это так же просто, как запустить команду и найти ее для себя (она управляется меню), так как она не портит ваши существующие настройки экрана. И я сделал свой ответ в вики сообщества, так что не стесняйтесь редактировать его.
Дренч поднимает интересный вопрос - поведение по умолчанию при двойном подключении к одному и тому же сеансу в tmux отличается. Однако, если вы хотите присоединиться дважды и иметь независимый вид окон в этом сеансе - запустите tmux с
tmux new-session -t <session name>
Это создаст для вас новый сеанс и присоединит окна к уже существующему сеансу. Если вы не назвали свой первый сеанс, вы можете добавить его с помощью «переименовать сеанс».
Один большой screen
недостаток в том, что он активно не развивается. На страницах ошибки есть близко к 200 нераспределенным пунктам вернуться в течение 5 лет.
tmux
также есть некоторые открытые вопросы, но гораздо меньше, и более активно поддерживается.
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 основан на ncurses, в то время как screen не рисует дополнительные элементы. Если кто-то использует эмулятор терминала, который поддерживает прокрутку (и), он получит прокрутку с экрана, но не с tmux (по крайней мере, в конфигурации по умолчанию). То же самое относится к поиску и аналогичным функциям.