Come aumentare la dimensione del buffer di scrollback in tmux?


328

Come posso aumentare la dimensione del buffer di scrollback in tmux?

Se accedo alla modalità di copia, il numero di righe di scorrimento disponibili (visibili nell'angolo in alto a destra) è sempre inferiore a 2000. Ho cercato di trovare un elenco di tutti i comandi di tmux, ma non riesco a trovare nulla sulla dimensione di scorrimento. Per tutto ciò che vedo il screencomando per l'impostazione di quell'opzione non funziona tmux.

Utilizzando tmux1.8, Ubuntu 12.04 LTS, o konsoleo gnome-terminal.

Risposte:


428

Il limite della cronologia è un attributo del riquadro che è stato risolto al momento della creazione del riquadro e non può essere modificato per i riquadri esistenti . Il valore viene preso history-limitdall'opzione sessione (il valore predefinito è 2000).

Per creare un riquadro con un valore diverso, è necessario impostare l' history-limitopzione appropriata prima di creare il riquadro.

Per stabilire un valore predefinito diverso, puoi inserire una riga come la seguente nel tuo .tmux.conffile:

set-option -g history-limit 3000

Nota: fare attenzione a impostare un valore predefinito molto grande, può facilmente consumare molta RAM se si creano molti riquadri.

Per un nuovo riquadro (o il riquadro iniziale in una nuova finestra) in una sessione esistente, è possibile impostare quello di quella sessione history-limit. È possibile utilizzare un comando come questo (da una shell):

tmux set-option history-limit 5000 \; new-window

Per (il riquadro iniziale della finestra iniziale in) una nuova sessione dovrai impostare il "globale" history-limitprima di creare la sessione:

tmux set-option -g history-limit 5000 \; new-session

Nota: se non si reimposta il history-limitvalore, il nuovo valore verrà utilizzato anche per altri riquadri / finestre / sessioni creati in futuro; attualmente non esiste un modo diretto per creare un singolo nuovo riquadro / finestra / sessione con il proprio limite specifico senza (almeno temporaneamente) la modifica history-limit(sebbene show-option(specialmente in 1.7 e versioni successive) possa essere utile recuperare il valore corrente in modo da ripristinarlo in un secondo momento ).


26
Se una "linea" è in realtà solo i caratteri al suo interno, allora possiamo supporre che 128 byte sia una dimensione della linea ragionevole in memoria. Se sono disposto a impegnare 32 MB per scorrere indietro per un singolo riquadro (adatto a me, non uso molti riquadri), allora potrei aumentare il limite della mia cronologia a circa 2 ** (25 - 7) = 256K250.000 righe.
phs,

8
Ho finito per stabilirmi ilset-option -g history-limit 50000
phs il

2
il mio sembra salire solo a circa 4700 .. anche se un nuovo riquadro. tmux 1.9
wuxmedia

4
Per quelli di voi che non sanno dove trovare il file .tmux.conf, è possibile semplicemente creare un nuovo file in ~ / .tmux.conf, quindi aggiungere questa singola riga nel file set-option -g history-limit 50000
C. Guarda il

1
Mi sono imbattuto in un piccolo trauma. Tutte le sessioni di tmux devono essere chiuse affinché questa modifica abbia effetto. Provenendo dallo schermo GNU ho pensato che ogni nuova sessione dello schermo avrebbe generato ~ / .tmux.conf, ma non è così. Solo quando tutte le sessioni di tmux sono chiuse e ne viene aperta una nuova, la modifica a ~ / .tmux.conf ha effetto.
rudolph9,

24

Apri il file di configurazione di tmux con il seguente comando:

vim ~/.tmux.conf

Nel file di configurazione aggiungere la seguente riga:

set -g history-limit 5000

Disconnettersi e riconnettersi, avviare una nuova finestra di tmux e il limite è 5000 ora.


3
Non è necessario disconnettersi ed effettuare l'accesso. È sufficiente chiudere completamente il server tmux o assicurarsi di eseguire il source ~/.tmux.confin ciascuna sessione (quindi avviare nuove finestre in quelle sessioni e chiudere quelle vecchie).
henrebotha,

3

Questo si basa su ntc2 e sulla risposta di Chris Johnsen. Lo sto usando ogni volta che voglio creare una nuova sessione con un limite cronologico personalizzato. Volevo un modo per creare sessioni con scrollback limitato senza cambiare permanentemente il mio limite di cronologia per sessioni future.

tmux set-option -g history-limit 100 \; new-session -s mysessionname \; set-option -g history-limit 2000

Funziona indipendentemente dalla presenza di sessioni esistenti. Dopo aver impostato il limite di cronologia per la nuova sessione, lo ripristina al valore predefinito che per me è 2000.

Ho creato uno script bash eseguibile che lo rende un po 'più utile. Il primo parametro passato allo script imposta il limite cronologico per la nuova sessione e il secondo parametro imposta il nome della sessione:

#!/bin/bash
tmux set-option -g history-limit "${1}" \; new-session -s "${2}" \; set-option -g history-limit 2000
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.