Тод Фрід має рацію, "правильний" спосіб це зробити - це використовувати \;. Типу. Але є корч.
Розумієте, ви з'єднуєте послідовність команд tmux разом, надаючи tmux сполучник ;. Таким чином, ви можете сказати у файлі, створеному tmux
new-session "monitor1" ; split-window -v "monitor2"
якщо ви чомусь хотіли, щоб це все було в одному рядку. Тепер ви можете дати , що складовою оператор одного рядка до tmuxкоманді з оболонки також , але; повинні бути екрановані , так що оболонка інтерпретує його як ще один аргумент в користь tmux. Таким чином, еквівалент вищезазначеного з оболонки є
$ tmux new-session "monitor1" \; split-window -v "monitor2"
Аналогічно bind-keyкоманда tmux приймає ряд аргументів, які є командою tmux та аргументами, які потрібно запустити при натисканні клавіші. Якщо ви хочете прив’язати C-qдо вищезазначеної послідовності всередині файлу, створеного tmux, ви скажете
bind-key -n C-q new-session "monitor1" \; split-window -v "monitor2"
Тут ми уникнули ; від tmux , так що tmux не трактує це як кінець bind-keyкоманди, а як інший аргумент, який повинен bind-keyсказати йому сформувати складну команду як обмежене значення C-qключа.
Отже, що відбувається, коли ми хочемо змусити tmux робити це з оболонки? Ціла купа втечі.
$ tmux bind-key -n C-q new-session "monitor1" \\\; split-window -v "monitor2"
По- перше, ми повинні рятуючись від \ і; кожен з оболонки , в результаті чого оболонка пройти два символу в \;якості аргументу tmux. Потім це виходить ;з tmux, внаслідок чого він присвоює весь складений оператор як зв'язування C-q.
Тепер, усе, що сказано, якщо ви використовуєте складну програму tmux, як це неодноразово, я б запропонував вам створити файл tmux, щоб зберегти його:
# In split-windows.tmux:
new-session "monitor1"
split-window -v "monitor2"
bind-key -n C-s new-window "monitor4"
# ...etc...
І потім:
$ tmux source split-windows.tmux # (or even make an alias for this)
Це буде набагато простіше підтримувати такий спосіб.
\;:$ tmux bind-key -n C-q new-session "monitor1" '\;' split-window -v "monitor2"