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ć tmux
komendę 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-key
komenda tmux pobiera szereg argumentów, które są komendą tmux i argumentami uruchamianymi po naciśnięciu klawisza. Jeśli chcesz powiązać C-q
powyż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-key
polecenia, ale jako kolejny argument bind-key
nakazujący mu utworzenie polecenia złożonego jako związanej wartości C-q
klucza.
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"