Тодд Фрид прав, "правильный" способ сделать это - использовать \;
, Вроде, как бы, что-то вроде. Но есть загвоздка.
Видите ли, вы соединяете последовательность команд tmux вместе, давая tmux соединение ;
, Таким образом, в файле, полученном от tmux, вы можете сказать
new-session "monitor1" ; split-window -v "monitor2"
если по какой-то причине вы хотели, чтобы все это было в одной строке. Теперь вы можете передать этот однострочный составной оператор команде tmux
из оболочки, но также ;
должен быть экранирован, чтобы оболочка интерпретировала его как еще один аргумент для tmux
. Таким образом, эквивалент вышеупомянутого из оболочки
$ tmux new-session "monitor1" \; split-window -v "monitor2"
Точно так же команда tmux bind-key
принимает ряд аргументов, которые являются командой 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)
Так будет легче поддерживать.