Todd Freed haklı, bunu yapmanın "doğru" yolu kullanıyor \;. Sırala. Ama bir engel var.
Görüyorsunuz, bir araya tmux komutları vererek tmux komutları dizisine katılıyorsunuz ;. Böylece, tmux kaynaklı bir dosyada
new-session "monitor1" ; split-window -v "monitor2"
Eğer bir nedenden ötürü, hepsini tek bir satırda istiyordun. Şimdi, bu tek satırlık bileşik deyimi verebilir tmuxayrıca bir kabuk komutunu ama; öylesine kaçmış gerektiğini başka argüman olarak kabuk yorumlayıp onu tmux. Bu nedenle, yukarıdakilerden kabuğa eşdeğer olan
$ tmux new-session "monitor1" \; split-window -v "monitor2"
Benzer şekilde, tmux bind-keykomutu , tmux komutu olan bir dizi argüman ve tuşa basıldığında çalıştırılacak argümanları alır. C-qYukarıdaki sıraya tmux kaynaklı bir dosyanın içinden bağlanmak istiyorsanız,
bind-key -n C-q new-session "monitor1" \; split-window -v "monitor2"
Burada ; tmux'dan kaçtık , böylece tmux bind-keykomutun sonu olarak yorumlanmıyor , fakat anahtarın bind-keybağlı değeri olarak bir bileşik komut oluşturmasını söylemek için başka bir argüman olarak C-q.
Peki, bunu tmux'a kabuktan yapmak istediğimizde ne olur? Bir sürü kaçış.
$ tmux bind-key -n C-q new-session "monitor1" \\\; split-window -v "monitor2"
İlk olarak, kaçmak zorunda \ ve; her birinden kabuk kabuk iki karakter geçmesine neden \;bir argüman olarak tmux. Bu daha sonra ;tmux'dan kaçar ve bileşik ifadenin tamamını bağlayıcı olarak atamasına neden olur C-q.
Şimdi, tüm bunlar, tekrar tekrar böyle bir karmaşık tmux kurulumu kullanıyorsanız, içeride tutmak için bir tmux dosyası oluşturmanızı öneririm:
# In split-windows.tmux:
new-session "monitor1"
split-window -v "monitor2"
bind-key -n C-s new-window "monitor4"
# ...etc...
Ve sonra:
$ tmux source split-windows.tmux # (or even make an alias for this)
Bu şekilde sürdürmek çok daha kolay olacak.
\;:$ tmux bind-key -n C-q new-session "monitor1" '\;' split-window -v "monitor2"