Todd Freed ma rację, „poprawnym” sposobem na zrobienie tego jest użycie \;. Raczej. Ale jest szkoda.
Widzisz, łączysz sekwencję poleceń tmux razem, nadając tmux koniunkcję ;. Zatem w pliku pochodzącym od tmux można powiedzieć
new-session "monitor1" ; split-window -v "monitor2"
jeśli z jakiegoś powodu chcesz tego wszystkiego w jednym wierszu. Teraz możesz przekazać tmuxkomendę z wiersza również tę złożoną jednowierszową instrukcję złożoną, ale; należy ją zmienić, aby powłoka zinterpretowała ją jako kolejny argument tmux. Zatem odpowiednikiem powyższego z powłoki jest
$ tmux new-session "monitor1" \; split-window -v "monitor2"
Podobnie, bind-keykomenda tmux pobiera szereg argumentów, które są komendą tmux i argumentami uruchamianymi po naciśnięciu klawisza. Jeśli chcesz powiązać C-qpowyższą sekwencję z wnętrza pliku pochodzącego z tmux, powiedziałbyś
bind-key -n C-q new-session "monitor1" \; split-window -v "monitor2"
W tym miejscu uniknęliśmy ; tmux , aby tmux nie interpretował go jako końca bind-keypolecenia, ale jako kolejny argument bind-keynakazujący mu utworzenie polecenia złożonego jako związanej wartości C-qklucza.
Co się stanie, gdy chcemy, aby Tmux zrobił to z powłoki? Dużo ucieczki.
$ tmux bind-key -n C-q new-session "monitor1" \\\; split-window -v "monitor2"
Po pierwsze, musimy uciec \ i; każdy z muszli , co powoduje, że powłoka przekazać dwóch znaków \;jako argument tmux. To następnie ucieka ;przed tmux, powodując przypisanie całej instrukcji złożonej jako wiązania C-q.
Teraz, wszystko to powiedziawszy, jeśli wielokrotnie używasz takiej złożonej konfiguracji tmux, sugerowałbym utworzenie pliku tmux, aby zachować go w:
# In split-windows.tmux:
new-session "monitor1"
split-window -v "monitor2"
bind-key -n C-s new-window "monitor4"
# ...etc...
I wtedy:
$ tmux source split-windows.tmux # (or even make an alias for this)
Tak będzie o wiele łatwiej.
\;:$ tmux bind-key -n C-q new-session "monitor1" '\;' split-window -v "monitor2"