Obtenir le contenu du tampon de défilement TMux

13

Avec TMux, existe-t-il un moyen de récupérer par programme le contenu du tampon de défilement au-dessus de la ligne de commande actuelle?

Je cherche essentiellement à écrire un script bash pour itérer vers le haut jusqu'à ce que je trouve une chaîne correspondante. Pour être clair, je ne veux pas parcourir l'historique des commandes tapées; Je veux parcourir tout ce qui est apparu sur la console.

mahemoff
la source

Réponses:

21

Avec tmux 1.5 (et versions ultérieures), vous pouvez donner des nombres négatifs à l' -Soption d' capture-paneaccéder au tampon de défilement arrière.

Exemples:

  • Capturez (jusqu'à) 32 768 lignes de la mémoire tampon de défilement avec le texte actuel du volet:

    tmux capture-pane -pS -32768
    
  • Capturez seulement la dixième ligne de défilement la plus récente:

    tmux capture-pane -pS -10 -E -10
    
  • Capturez (jusqu'à) les 100 dernières lignes «déroulées»:

    tmux capture-pane -pS -100 -E -1
    
  • Capturez onze lignes qui chevauchent la ligne supérieure actuelle du volet (5 lignes «défilées» et les 6 premières lignes du volet):

    tmux capture-pane -pS -5 -E 5
    

Remarque: comme avec la plupart des commandes tmux , vous pouvez utiliser -tpour cibler un volet spécifique si le volet «actuel» n'est pas celui que vous souhaitez tester.


Les exemples ci-dessus utilisent également l' -poption to capture-pane, qui n'est disponible qu'à partir de tmux 1.8. Avec les anciennes versions, vous pouvez contourner ce problème en utilisant save-buffer:

tmux capture-pane -S -32768 \; save-buffer - \; delete-buffer
Chris Johnsen
la source
Génial, exécuter cela sur n'importe quel volet est encore mieux que prévu.
mahemoff