tmux - Belirtilen bir konuma pencere ekle


14

tmux, bir pencereyi aşağıdaki gibi belirtilen bir boş dizine taşıyabileceğiniz "taşı-pencere" komutuna sahiptir :

move-window -t 3

Ancak, dizin 3 zaten alınmışsa, geçerli pencerenizi 3. konuma taşıyamazsınız.

Zaten alınmış ve daha sonra diğer sonraki pencereler için pencere numaralarını artırmak bile (örneğin 3 başlangıçta şimdi olacak olan) benim pencere 3 pozisyonda taşımak (eklemek) sağlayacak bir seçenek arıyorum 4, aşağıdaki 5 olacak vb.)

tmux 

Yanıtlar:


2

Aşağıdaki komut dosyası, istediğinizi yapmanızı sağlar. Bir kabuk isteminden çalıştırabilir veya şunları yapabilirsiniz:

:run "ins-move 2 5"

Bu örnek, ikinci pencereyi beşinci pencereden önceki konuma taşır.

#!/bin/bash
for ((i=$1; i<$2-1; i++))
do
    tmux swap-window -s :$i -t :$((i+1))
done

Teşekkürler! Harika çalışıyor - "5 2" gibi durumlarda bile çalışacak şekilde uyarlamam gerekecek. En azından şimdi nasıl yapıldığını biliyorum.

@Andrei: Başlayabildiğime sevindim. Lütfen kabul edilen cevapları işaretlemeyi ve uygun olduğunu düşündüğünüzde oylamayı unutmayın.
— sonraki duyuruya kadar duraklatıldı.

Cevabınızı şimdi kaldırdım. Daha önce yapamadım çünkü şimdi yeterince itibar puanım oldu.

25

Deneyin: new-window -a

yeni pencere oluştururken -a seçeneğini kullanmak yeni pencereyi bir sonraki dizine ekleyebilirken, diğer tüm pencerelerin dizini otomatik olarak artar.


@DennisWilliamson'dan daha iyi bir çözüm gibi görünüyor, üzgünüm Dennis :-) Çalışıyorum tmux 1.9a, belki bu özellik önceki sürümlerde mevcut değildi.
— Sonia Hamilton

Muhteşem. Bunu nasıl özlediğimden emin değilim. Beni geçmişte 4 seneden kurtardın, zaman yolcusu! Teşekkürler!
— rld.

0 dizininde yeni bir pencere istiyorsanız çalışmaz
— nccc

1

Harici senaryolara ihtiyaç duymadan bir çözümüm var. Aşağıdakileri .tmux.conf dosyasına koyun:

bind i command-prompt -p 'Insert window at:' 'run-shell "if tmux select-window -t %1; then tmux new-window -a; tmux swap-window -s %1 -t \$((%1+1)); else tmux new-window; tmux move-window -t %1; fi; tmux select-window -t #I; tmux select-window -t %1;"'

[PREFIX] -i tuşlarına basın ve istenen kesici uç konumunu sağlayın. Son 2 seçme penceresi komutu 'önceki' penceresinin beklendiği gibi ayarlandığından ve eklenen pencereye gittiğinizden emin olur.

EDIT: tamam, çok erken konuştum. Ben değiştirmek zorunda #Iiçin #{window_id}pencere endeksi ekleme bazı pencereler için değişmesidir. Yeni işlev (okunabilirlik için yeni satırlar eklenmiştir):

bind i command-prompt -p 'Insert window at:' '      \
    run-shell "                                     \
        if tmux select-window -t %1; then           \
            tmux new-window -a;                     \
            tmux swap-window -s %1 -t \$((%1+1));   \
        else                                        \
            tmux new-window;                        \
            tmux move-window -t %1;                 \
        fi;                                         \
        tmux select-window -t #{window_id};         \
        tmux select-window -t %1;                   \
    "'                                               

Basitleştirilmiş bir sürümü kullanmaya başladım.

 bind i command-prompt -p 'Insert window at:' 'new-window -a -t %1; swap-window -t -1'
 bind I command-prompt -p 'New window at:'    'new-window -t %1'

Önek-ı pozisyonunda bir pencere ekler x penceresi zaman x varolur ve bu takımı üzerinde hareket pencere. Önek-ı pozisyon yeni bir pencere oluşturur x penceresi zaman x yok.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.