il mirroring di un riquadro tra due finestre


14

È possibile visualizzare lo stesso riquadro in due finestre diverse di una singola sessione di tmux?

In genere ho una singola divisione orizzontale nella mia finestra principale con vim nel riquadro superiore (circa l'80-90% dell'altezza del terminale) e una riga di comando nel riquadro inferiore su cui eseguo il programma su cui sto lavorando. Poiché la finestra in basso è così piccola, spesso non riesco a vedere l'output degli errori e l'utilizzo delle scorciatoie da tastiera di tmux per scorrere indietro sta diventando noioso. Vorrei che la mia seconda finestra si collegasse allo stesso riquadro in modo che, se ho bisogno di vedere più del mio output di errore, posso semplicemente passare rapidamente alla seconda finestra senza dover gestire lo scrollback. È possibile?

(Immagino che un fallback sarebbe usare qualcosa come tee per scrivere stdout in un file di registro e adattarlo nella mia seconda finestra. Spero che non sia necessario però)

Risposte:


7

Per impostazione predefinita, è possibile attivare / disattivare lo "stato zoom" di un riquadro premendo Prefixe z(il prefisso predefinito è Ctrl+B).

Ciò renderà il riquadro corrente (il riquadro della riga di comando, ad esempio) che occupa l'intera finestra. Premere Prefixe di znuovo per "annullare la visualizzazione" del riquadro.


10

Temo che questa sia una delle cose che non puoi fare tmux(mi aspetto che i problemi con un riquadro visualizzato in diversi spazi di dimensioni diverse siano il motivo principale). Tuttavia, ci sono diversi modi per aggirare questo problema, tutti basati sull'associazione di determinate azioni ad alcune combinazioni di tasti. Dal momento che molto dipende dal layout che si sta utilizzando, avendo appena un layout semplice con due riquadri che si sta di nota è rendere la vostra vita molto più facile

  1. rotate-window - cambierà semplicemente i riquadri, dandoti così l'80% -90% per l'output del comando (e la piccola finestra per ViM).

  2. break-pane vs. join-pane -v -p <preview_percentage> -t !

  3. pipe-panecon il commandreindirizzamento senza buffer a una pipe denominata (ovvero un nodo del file system creato con mkfifo) - quindi utilizzare tail -fquella pipe denominata nell'altro riquadro.

  4. reindirizza l'output a less, che ha anche la modalità follow che tailha (almeno quella GNU).

  5. resize-pane -Zsul pannello più piccolo lo ingrandirà sul terminale completo. Un-zoom successivo lo manterrà attivo, quindi è necessario un po 'di trucco per farlo funzionare comodamente.


2
A proposito: "Mi aspetto che i problemi con un riquadro visualizzato in più spazi di dimensioni diverse siano la ragione principale" Questo potrebbe essere un fattore nella complessità dell'implementazione, ma tmux supporta la stessa cosa a livello di finestra, tramite raggruppati sessioni unix.stackexchange.com/questions/24274/… . Aggiunge semplicemente il riempimento sottostante alla finestra più piccola. Teoricamente il mirroring dei riquadri potrebbe essere eseguito allo stesso modo.
mahemoff,

Hm ... hai ragione, potrebbe essere un modo per farlo.
peterph,

1

Puoi usare uno script per generare la tua pseudo-sessione in un file e poi tailquel file in una seconda finestra.

Nel tuo riquadro di lavoro.

script -f tailme.out

E nel riquadro di visualizzazione.

tail -f tailme.out

1

Concordo con gli altri sul fatto che per il tuo caso Prefix+ zsarebbe la soluzione più diretta, ma per la questione generale del mirroring di un riquadro c'è un po 'di un hack che potrebbe funzionare: nidificare una sessione schermo all'interno di tmux.

Installa lo schermo di gnu, quindi avvialo per il riquadro di cui vuoi eseguire il mirroring. Quindi screen -xcollegare in altri riquadri.

Se lo desideri, puoi anche nidificare un'altra sessione di tmux nel riquadro, ma le sessioni di tmux devono essere annidate con cura.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.