дзеркальне відображення між двома вікнами


15

Чи можливо однакова панель відображатися в двох різних вікнах одного сеансу tmux?

У моєму головному вікні зазвичай є один горизонтальний розкол з vim у верхній частині (близько 80-90% висоти терміналу) та командний рядок у нижній частині, де я запускаю програму, над якою працюю. Оскільки нижнє вікно настільки мале, я часто не бачу виводу помилок, а використання клавішних комбінацій клавіш tmux для прокрутки назад стає стомлюючим. Мені б хотілося, щоб моє друге вікно було приєднано до тієї самої панелі, щоб, якщо мені потрібно побачити більше моїх помилок, я можу просто швидко перейти до другого вікна, не маючи справи з прокруткою. Чи можливо це?

(Я думаю, що одним із резервних можливостей було б використовувати щось на зразок трійника для написання stdout у лог-файл та хвіст, що у моєму другому вікні. Хоча я сподіваюся, що це не потрібно)

Відповіді:


8

За замовчуванням ви можете перемикати "стан масштабування" панелі натисканням Prefixта z(префікс за замовчуванням Ctrl+B).

Це зробить поточну панель (наприклад, панель вашого командного рядка) зайняти все вікно. Натисніть Prefixі zзнову, щоб "зняти масштаб" панелі.


11

Боюся, це одна з речей, з якими ти не можеш зробити tmux (я б очікував, що проблеми з однією панеллю відображатимуться в декількох просторах різного розміру як основна причина). Однак існує кілька способів обійти це - все засноване на прив'язці певних дій до деяких комбінацій клавіш. Оскільки багато залежить від макета, який ви використовуєте, просто простий макет з двома панелями, про які ви згадуєте, значно полегшує ваше життя.

  1. rotate-window - він просто поміняє панелі, тим самим даючи вам 80% -90% для виведення команди (і невелике вікно для ViM).

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

  3. pipe-paneз commandнерозподіленим перенаправленням до названої труби (тобто вузла файлової системи, створеного за допомогоюmkfifo ) - тоді використовуйте tail -fцю іменовану трубу в іншій області.

  4. труба на вихід less, який також має наступний режим, якийtail має (принаймні GNU).

  5. resize-pane -Zна меншій панелі буде збільшено масштаб на повному терміналі. Подальше зменшення масштабу дозволить активувати його, тому для його комфортної роботи потрібно трохи хитрощів.


2
BTW - "Я б очікував, що проблеми з відображенням однієї панелі в декількох просторах різного розміру є основною причиною" Це може бути фактором складності її впровадження, але tmux підтримує те саме на рівні вікон, через групування сесій unix.stackexchange.com/questions/24274/… . Він просто додає прокладки внизу до меншого вікна. Теоретично дзеркальне відображення панелі можна зробити так само.
mahemoff

Гм ... ти маєш рацію, це може бути способом зробити це.
петерф

1

Ви можете використовувати сценарій для виведення псевдосеансу у файл, а потім tailу другому вікні.

У вашій робочій області.

script -f tailme.out

І на панелі перегляду.

tail -f tailme.out

1

Я погоджуюся з іншими, що для вашого випадку Prefix + zбуло б найбільш прямим рішенням, але для загального питання про дзеркальне відображення панелі можна трохи зламати, який може спрацювати - вклавши екранний сеанс всередині tmux.

Встановіть gnu screen, а потім запустіть його на панелі, яку ви хочете відобразити. Потімscreen -x вкласти в інші області.

Ви також можете вкласти ще один tmux сеанс на панелі, якщо хочете, але tmux сесії слід вкладати обережно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.