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.