odbicie lustrzane tafli między dwoma oknami

15

Czy to możliwe, aby ten sam panel pojawiał się w dwóch różnych oknach pojedynczej sesji tmux?

Zwykle mam pojedyncze poziome podzielenie w głównym oknie z vimem w górnym okienku (około 80-90% wysokości terminala) i wierszem poleceń w dolnym okienku, w którym uruchamiam program, nad którym pracuję. Ponieważ dolne okno jest tak małe, często nie widzę błędów, a używanie skrótów klawiaturowych tmux do przewijania do tyłu staje się męczące. Chciałbym, aby moje drugie okno było podłączone do tego samego okienka, więc jeśli chcę zobaczyć więcej danych wyjściowych błędów, mogę po prostu szybko przejść do drugiego okna bez konieczności zajmowania się przewijaniem. czy to możliwe?

(Wydaje mi się, że jednym z rozwiązań byłoby użycie czegoś w rodzaju tee do zapisania standardowego pliku do pliku dziennika i umieszczenie go w drugim oknie. Mam nadzieję, że nie jest to konieczne)

Will Norris
źródło

Odpowiedzi:

8

Domyślnie można przełączać „stan powiększenia” panelu, naciskając Prefixi z(domyślny prefiks to Ctrl+B).

Spowoduje to, że bieżący panel (na przykład panel wiersza poleceń) zajmie całe okno. Naciśnij Prefixi zponownie, aby „odłączyć” panel.

Kusalananda
źródło
11

Obawiam się, że jest to jedna z rzeczy, z którą nie można sobie poradzić tmux(spodziewałbym się, że głównym powodem będą problemy z wyświetlaniem jednego panelu w kilku przestrzeniach o różnych rozmiarach). Istnieje jednak kilka sposobów obejścia tego problemu - wszystkie oparte na powiązaniu pewnych działań z niektórymi kluczowymi kombinacjami. Ponieważ wiele zależy od używanego układu, posiadanie prostego układu z dwoma wspomnianymi panelami znacznie ułatwia życie

  1. rotate-window - po prostu zamieni panele, dając w ten sposób 80% -90% na wynik polecenia (i małe okno dla ViM).

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

  3. pipe-panez commandniebuforowanym przekierowaniem do nazwanego potoku (tj. utworzonego węzła systemu plików mkfifo) - następnie użyj tail -ftego nazwanego potoku w drugim panelu.

  4. potokuj wyjście do less, który ma również tryb śledzenia tail(przynajmniej GNU).

  5. resize-pane -Zna mniejszym panelu powiększy go na pełny terminal. Kolejne cofnięcie przybliżenia sprawi, że będzie on aktywny, więc potrzeba nieco sztuczek, aby zapewnić mu komfortową pracę.

Peter
źródło
2
BTW - „Spodziewałbym się, że głównym powodem będą problemy z wyświetlaniem jednego panelu w kilku przestrzeniach o różnych rozmiarach”. Może to być czynnik w złożoności jego implementacji, ale tmux obsługuje to samo na poziomie okna, poprzez pogrupowanie sesje unix.stackexchange.com/questions/24274/… . Po prostu dodaje wypełnienie poniżej do mniejszego okna. Teoretycznie lustrzane odbicie szyb można wykonać w ten sam sposób.
mahemoff
Hm ... masz rację, to może być dobry sposób, aby to zrobić.
peterph
1

Możesz użyć skryptu, aby wyprowadzić swoją pseudo-sesję do pliku, a następnie do tailtego pliku w drugim oknie.

W twoim okienku roboczym.

script -f tailme.out

I w okienku przeglądania.

tail -f tailme.out
slimisjim
źródło
1

Zgadzam się z innymi, że w twoim przypadku Prefix+ zbyłoby najbardziej bezpośrednim rozwiązaniem, ale w przypadku ogólnego pytania o odbicie lustrzane okienka jest pewien hack, który mógłby zadziałać - zagnieżdżenie sesji ekranowej w tmuxie.

Zainstaluj ekran GNU, a następnie uruchom go w okienku, który chcesz dublować. Następnie screen -xdołącz inne szyby.

Możesz także zagnieździć kolejną sesję tmux w okienku, jeśli chcesz, ale sesje tmux powinny być zagnieżdżane ostrożnie.

Mateusz
źródło