Todd Freed là đúng, cách "chính xác" để làm điều này là sử dụng \;
. Sắp xếp Nhưng có một chút khó khăn.
Bạn thấy đấy, bạn tham gia một chuỗi các lệnh tmux với nhau bằng cách cho tmux kết hợp ;
. Do đó, trong một tệp có nguồn gốc từ tmux, bạn có thể nói
new-session "monitor1" ; split-window -v "monitor2"
nếu, vì một số lý do, bạn muốn tất cả trên một dòng. Bây giờ, bạn cũng có thể đưa ra câu lệnh ghép một dòng cho tmux
lệnh từ shell nhưng lệnh ;
phải được thoát để shell giải thích nó như là một đối số khác tmux
. Do đó, tương đương với ở trên từ vỏ là
$ tmux new-session "monitor1" \; split-window -v "monitor2"
Tương tự, bind-key
lệnh tmux lấy một loạt các đối số là lệnh tmux và các đối số để chạy khi nhấn phím. Nếu bạn muốn liên kết C-q
với trình tự trên từ bên trong một tệp có nguồn gốc từ tmux, bạn sẽ nói
bind-key -n C-q new-session "monitor1" \; split-window -v "monitor2"
Ở đây, chúng ta đã thoát ;
khỏi tmux , do đó tmux không hiểu nó là phần cuối của bind-key
lệnh, mà là một đối số khác để bind-key
bảo nó tạo thành một lệnh ghép là giá trị ràng buộc của C-q
khóa.
Vậy điều gì xảy ra khi chúng ta muốn làm cho tmux làm điều đó từ vỏ? Cả một lối thoát.
$ tmux bind-key -n C-q new-session "monitor1" \\\; split-window -v "monitor2"
Đầu tiên, chúng ta phải thoát khỏi \
và sự ;
từng từ vỏ , gây ra vỏ để vượt qua hai nhân vật \;
như một đối số tmux
. Điều này sau đó thoát ;
khỏi tmux, khiến nó gán toàn bộ câu lệnh ghép là ràng buộc của C-q
.
Bây giờ, tất cả những gì đã nói, nếu bạn sử dụng một thiết lập tmux phức tạp như thế này nhiều lần, tôi khuyên bạn nên tạo một tệp tmux để giữ nó trong:
# In split-windows.tmux:
new-session "monitor1"
split-window -v "monitor2"
bind-key -n C-s new-window "monitor4"
# ...etc...
Và sau đó:
$ tmux source split-windows.tmux # (or even make an alias for this)
Sẽ dễ dàng hơn nhiều để duy trì theo cách đó.
\;
:$ tmux bind-key -n C-q new-session "monitor1" '\;' split-window -v "monitor2"