Risposte:
Il comando per farlo è join-pane
in tmux 1.4.
join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane] (alias: joinp) Like split-window, but instead of splitting dst-pane and creating a new pane, split it and move src-pane into the space. This can be used to reverse break-pane.
Per semplificare questo, ho questi vincoli nel mio .tmux.conf
per quello:
# pane movement
bind-key j command-prompt -p "join pane from:" "join-pane -s '%%'"
bind-key s command-prompt -p "send pane to:" "join-pane -t '%%'"
Il primo prende il riquadro dalla finestra di destinazione e lo unisce all'attuale, il secondo fa il contrario.
È quindi possibile ricaricare la sessione di tmux eseguendo quanto segue all'interno della sessione:
$ tmux source-file ~/.tmux.conf
Prefix+s
e inserisci il nome della finestra al prompt per inviare il riquadro a quella finestra ...
join-riquadro è la risposta. Anch'io ho avuto problemi con i miei tentativi di usarlo sulla base della documentazione di tmux. Ho scoperto che le opzioni -t e -s sembrano accettare [session]: window e non [session:] window. Vale a dire che specificare la sessione è facoltativo, ma includere: è obbligatorio. (Sto usando tmux 1.5)
Pertanto, per aggiungere un riquadro alla finestra corrente e posizionare la finestra 1 nel riquadro, il comando sarebbe (Ctrl-B o qualunque sia il tasto di associazione, seguito da) ...
:join-pane -s :1
È quindi possibile romperli appart con break-riquadro che per impostazione predefinita è: Ctrl-B! Se vuoi associarlo a una scorciatoia, ti suggerisco di NON sovrascrivere un'associazione predefinita come s, perché lungo la strada cercherai su Internet una risposta che coinvolga la sessione di scelta e non funzionerà sul tuo sistema. Si noti che il riquadro di interruzione è associato a! e @ è proprio accanto ad esso e non è associato a nulla per impostazione predefinita. Per questo motivo suggerisco questa associazione ...
bind-key @ command-prompt -p "create pane from:" "join-pane -s ':%%'"
In alternativa, per avere un selettore interattivo ...
bind-key @ choose-window 'join-pane -h -s "%%"'
In alternativa, per unirti sempre alla finestra visitata più di recente ...
bind-key @ join-pane -h -s !
NOTA: -h
ciò causa l'impilamento orizzontale dei riquadri (con una divisione verticale) rispetto al comportamento predefinito che è il contrario.
La cosa più importante è che IMPARARE qualunque cosa tu scelga di scorciatoia. Perché se lo imposti e lo dimentichi, rimarrai sconvolto quando ti ritroverai su un server straniero. E ammettiamolo, la cosa più importante che ti dà un multiplexer terminale sono sessioni affidabili su server remoti.
Questo completa la mia conversione da GNU Screen a Tmux. Non guarderò mai indietro.
Godere!
window.pane
ad esempio, join-pane -s 1.0
a spostare il riquadro 0 nella finestra 1 nella finestra corrente. Maggiori dettagli su maciej.lasyk.info/2014/Nov/19/tmux-join-pane
:
apparentemente non è più necessario (ad esempio, basta :join-pane -s 1
). Forse quello era un bug nelle versioni precedenti
Penso che mi piace quello che ho usato per spostare meglio i riquadri nella propria finestra. Io uso
break-pane -t :
L'ho capito attraverso la sperimentazione, ma sembra funzionare molto bene. Puoi legarlo o alias facilmente, senza bisogno di script.
join-pane
.
Se non si desidera digitare l'identificatore del riquadro in un prompt, è anche possibile utilizzare
bind-key j "join-pane -s !"
che unirà l'ultimo riquadro / finestra attivo alla finestra corrente.
unknown command: join-pane -s !
con 1.6.
bind-key j join-pane -s !
Dopo aver esaminato le altre risposte e esaminando la pagina man di tmux, per ora ho optato per i seguenti collegamenti:
bind-key S choose-window 'join-pane -v -s "%%"'
bind-key V choose-window 'join-pane -h -s "%%"'
Ciò ti consentirà di selezionare in modo interattivo la finestra da unire e rispecchia le mie lettere minuscole s
/ v
rilegature per creare nuove divisioni verticali / orizzontali. Se qualcuno sa come selezionare i singoli riquadri anziché le finestre fammi sapere.
-v
e -h
non creano rispettivamente "divisioni" verticali e orizzontali. Creano rispettivamente " riquadri impilati " verticali e orizzontali . (Vale a dire che i riquadri impilati verticalmente hanno una divisione orizzontale.) Quindi devi allenare il tuo cervello in quel modo. Inoltre -v
è il valore predefinito, quindi lo tralasciavo e lo inserivo solo -h
in modo che i tuoi ~/.tmux.conf
atti fossi un cheat sheet da guardare.
Per impostazione predefinita, Ctrl+ b, !sarebbe rompere il riquadro attivo in una nuova finestra e passare ad esso.
Dove Ctrl+ bè il prefisso predefinito per tmux .
Il tmux
comando che esegue questa chiave è break-pane
(alias:) breakp
come implementato cmd-break-pane.c
e associato come predefinito in key-bindings.c come visto in list-keys
(alias lsk
:) output del comando:
bind-key -T prefix ! break-pane
Non è necessario modificare i collegamenti chiave.
Mentre il riquadro che si desidera spostare ha lo stato attivo, digitare Prefisso, quindi :join-pane -t :1
dov'è 1
il numero della finestra di destinazione nella stessa sessione. Puoi spostarlo in un'altra sessione anteponendone il nome come project:3
. Per me join-pane
tab-autocompletes di j
.
Aggiungi -h
o -v
passa al comando per impostare l'orientamento della nuova divisione creata nella destinazione, oppure vai su di essa e Prefisso + spaceper riorganizzare.