2012-09-10 14 views

cevap

10

etkin pencere tek bölmesi, sahip olduğunda her zaman etkin pencere birden fazla bölmesi vardır bölmeler arasında

  • anahtarı ve pencereler arasında
  • anahtara Ca istiyorsanız

sonra last-pane ve last-window:

arasında karar vermek için etkin pencerede bölme sayısını sayar bir if-shell kullanabilirsiniz
bind-key C-a if-shell 'test $(tmux list-panes | wc -l) -gt 1' 'last-pane' 'last-window' 

“Geniş” ve “kare” yapılandırmaları arasında geçiş yaparken bölmelerinizi yeniden düzenlemek için “size kalmış” olacaktır (ör. break-pane ve join-pane aracılığıyla). biçim genişleme yapmak, böylece


tmux 1.8 if-shell ve run-shell yılında yapabilirsiniz basitçe kabuk komutu biraz:

bind-key C-a if-shell 'test #{window_panes} -gt 1' 'last-pane' 'last-window' 
+0

Mevcut pencerenin birden fazla bölüme sahip olup olmadığını sınamak için daha az hantal bir yol olup olmadığını merak ediyorum. '# {Pane_count} 'gibi tmux değişkenlerinden biri olmalı, sonra bir kabuğunu dışarı atmaktan ziyade' # {? ,,} 'yapısını ve IPC yapmak için başka bir tmux'u da bir boruda kullanabiliriz. ve "wc -l". Ne yazık ki, tüm tmux değişkenlerinin eksiksiz bir listesini bulamıyorum. Kullanışlı olan en az bir belgesiz olan '# {pane_current_command}' ı biliyorum. ** GÜNCELLEME ** Onu buldum, "Pencerede bölme sayısı" olan # {window_panes}. Mükemmel –

+0

saçmalık, bu koşullu şeyler, yalnızca durum-dizesi oluşturma için çalışabilir, hangi kabuk komutlarının çalışacağını belirlemez. Kesinlikle boru wc -l' için kaçının. –

+0

@StevenLu: * tmux * 1.8, "if-shell" (ve "run-shell") biçimindeki biçim genişletmelerini destekler, böylece bunu 1.8'de yapabilirsiniz: 'bind Ca if-shell 'testi # {window_panes} -gt 1' son bölme son pencere. –

1

Ben

if-shell '[ "$COLUMNS" -gt 80 ]' 'bind-key C-a "select-window -t :.+"' 'bind-key C-a "next-window"' 

(sizin iki uç genişlikleri birbirinden ayırt etmek 80 ayarlayın) ama ben de sözdizimi yukarı takılıyordum veya COLUMNS ilgili tmux ayarlanmamış aşağıdaki önermek istiyorum Ortam, yukarıdaki kabuk ifadesi her zaman benim için yanlış değerlendirir.

+2

'-shell' ancak ve' çalışma shell' hem çalışma içindedir sunucu (herhangi bir oturum veya istemci değil) bağlamından (bu nedenle), COLUMNS (hatta std {in, out, err}) değerine sahip olmayacaktır. En son aktif müşterinin genişliğini şu şekilde bir şeye sahip olabilirsiniz: tmux liste-istemcileri -F '# {client_activity} # {client_width}' | sort -rn | kafa -1 | cut -d '' -f' –

+0

IIRC, '$ COLUMNS' bir bash değişkendir, bir ortam değişkeni değil; Bu yüzden, testi yaparken, kapsayıcı kabuğun bash olduğundan emin olmalısınız. Ve eğer olsa bile, anahtar bağlantısına basarken kullanıcının baktığı aynı pty'ye (veya herhangi bir pty'ye) bağlı olması gerekmeyecektir. – jpaugh

İlgili konular