Pobierz zawartość bufora przewijania TMux

13

Czy w TMux jest jakiś sposób na programowe pobieranie zawartości bufora przewijania powyżej bieżącego wiersza poleceń?

Zasadniczo zamierzam napisać skrypt bash, aby iterować w górę, aż znajdę pasujący ciąg. Dla jasności nie chcę przeglądać historii wpisywanych poleceń; Chcę przejrzeć wszystko, co pojawiło się na konsoli.

mahemoff
źródło

Odpowiedzi:

21

W tmux 1.5 (i nowszych) możesz podać liczby ujemne -Sopcji capture-panedostępu do bufora przewijania wstecz.

Przykłady:

  • Przechwyć (do) 32768 linii bufora przewijania wstecz wraz z bieżącym tekstem panelu:

    tmux capture-pane -pS -32768
    
  • Uchwyć tylko dziesiątą ostatnio „przewiniętą” linię:

    tmux capture-pane -pS -10 -E -10
    
  • Uchwyć (maksymalnie) 100 ostatnio „przewijanych” wierszy:

    tmux capture-pane -pS -100 -E -1
    
  • Przechwyć jedenaście linii, które znajdują się nad bieżącą górną linią panelu (5 linii „przewiniętych” i 6 górnych linii panelu):

    tmux capture-pane -pS -5 -E 5
    

Uwaga: Podobnie jak w przypadku większości poleceń tmux , możesz użyć, -taby celować w określony panel, jeśli panel „bieżący” nie jest tym, który chcesz zbadać.


W powyższych przykładach wykorzystano również -popcję capture-pane, która jest dostępna tylko od tmux 1.8. W starszych wersjach można obejść problem z jego brakiem, używając save-buffer:

tmux capture-pane -S -32768 \; save-buffer - \; delete-buffer
Chris Johnsen
źródło
Świetnie, uruchamianie tego na dowolnym panelu jest nawet lepsze niż się spodziewałem.
mahemoff