Переглядаючи питання, які я дізнався про tmux (я зазвичай використовував GNU Screen). Моє запитання - які плюси і мінуси кожного з них. Тим більше я не міг знайти багато про tmux.
Переглядаючи питання, які я дізнався про tmux (я зазвичай використовував GNU Screen). Моє запитання - які плюси і мінуси кожного з них. Тим більше я не міг знайти багато про tmux.
Відповіді:
З їх веб-сайту :
- Чим tmux відрізняється від екрана GNU? Що ще пропонує?
tmux пропонує ряд переваг перед екраном:
- чітко визначена модель клієнт-сервер: Windows - це незалежні об'єкти, які можуть бути приєднані одночасно до декількох сеансів і переглядатися з декількох клієнтів (терміналів), а також вільно переміщуватися між сесіями в межах одного сервера 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, а на екрані - GNU GPL. Це має значення для деяких людей.
на даний момент екран більш представлений (на Linux), тобто ви, швидше за все, знайдете його в заданому вікні Linux, ніж на tmux. tmux, однак, більше представлений на OpenBSD, оскільки він включений як частина базової установки.
Обидві програми дозволяють вам робити одне й те саме, хоча стан речей трохи складніший за це. Переключення між цими двома не надто складне, тому що більшість функцій екранів також знайшли свій шлях до tmux, хоча якщо ви користуєтесь енергією будь-якого з них, ви, швидше за все, знайдете певні розлади при переході на інший.
Як і будь-яка програма, вона дійсно залежить від ваших потреб і з якою вам комфортніше. Спробуйте їх і побачити, з чим ви добре граєте.
Для отримання додаткової інформації про tmux дивіться https://tmux.github.io/
Найбільша різниця в моєму використанні полягала в тому, що в Gnu Screen можна розділяти кадри тільки по горизонталі, тоді як у Tmux ви можете розділяти як горизонтально, так і вертикально. Це своєрідна рухома ціль, хоча, як я тут розповідаю, вертикальний розкол робить шлях на екран .
Крім того, речі про плоскі.
Я подумав, що просто згадаю про byobu
обгортку, яка доступна для екрана, що робить її набагато краще прямо з коробки. Я не знаю, чи є щось подібне для tmux, але я byobu
зробив .screenrc лише кількома рядками. Перегляньте цю швидку статтю про byobu та скріншоти. На сторінці проекту byobu описується назва, що походить від японського терміна для декоративних багатопанельних екранів, які виконують роль складаних розділювачів кімнати. Крім того, що лише запуск не шкодить налаштуванням екрана, тому ви можете сміливо спробувати. Після того, як ви розпочнете сеанс, byobu
ви можете вільно підключитися до нього, використовуючи screen
і все одно не втрачаючи будь-яких налаштувань, виконаних самим byobu
(тому використовуйте його лише для початкового виклику). Дві основні його переваги:
Я не використовую частину прив'язок клавіатур, але, безумовно, знаходжу смужки стану корисними.
Також вам може бути корисно посилання Screen Vs tmux . Я думаю, що більшість із них вже згадується за наявними відповідями.
byobu
, як-от ця відповідь, зі списком її функцій.
byobu
, але це так само просто, як запустити команду та знайти її для себе (вона керується меню), оскільки вона не порушує існуючі налаштування екрана. І я зробив свою відповідь вікі спільноти, тому сміливо редагуйте її.
Drench викликає цікавий момент - поведінка за замовчуванням підключення двічі до одного сеансу відрізняється в tmux. Однак якщо ви хочете приєднати двічі та мати незалежний перегляд вікон у цьому сеансі, - почніть tmux з
tmux new-session -t <session name>
Це створить новий сеанс для вас та додасть вікна з уже наявного сеансу. Якщо ви не назвали свій перший сеанс, можете додати його за допомогою "перейменувати сесію".
Одним із важливих проблем screen
є те, що він активно не розвивається. На сторінках помилок налічується близько 200 непризначених елементів, що повертаються протягом 5 років.
tmux
є і деякі відкриті питання, але набагато менше, і їх більш активно підтримують.
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 - це ncurses, поки екран не малює додаткових елементів. Якщо хтось використовує емулятор терміналу, який підтримує прокрутку, він отримає прокрутку екраном, але не tmux (принаймні в конфігурації за замовчуванням). Те саме стосується пошуку та подібних функцій.