Як приховати панель tmux?


60

У моєму вікні tmux є 3 області:

--------------------------
|             |      2   |
|             |          |
|        1    |----------|
|             |      3   |
|             |          |
--------------------------

Панелі 1 і 2 мають vim. На панелі 3 працює кліп, який я розробляю. Іноді я хочу порівнювати панелі 1 і 2, тому хочу приховати панель 3:

--------------------------
|             |          |
|             |          |
|        1    |       2  |
|             |          |
|             |          |
--------------------------

а потім знову поверніть панель 3. Я не хочу вбивати панель 3, оскільки я створив там деякі речі і не хочу йти, хоч налаштовуючи їх знову.

  • Чи є щось подібне, за допомогою PREFIX + zчого можна масштабувати область 2, але не торкаючись панелі 1? Або
  • Чи є спосіб приховати панель 3 швидко і повернути її назад, коли це потрібно?

Відповіді:


71

Використовуйте команди break-paneта join-pane. Зверніться до man tmuxдля деталей, опцій і використання.


Сховати панель 3:

Виберіть область 3та введіть Prefix- :break-pane -dP.

tmuxнадішле панель 3до вікна у фоновому режимі ( -dпрапор) і надрукує деяку інформацію про нього на панелі 2 ( -Pпрапор). За замовчуванням ви побачите щось на кшталт 1:2.0(що означає:) session:window.pane. Натисніть, qщоб продовжувати працювати. 1

1 З деякою практикою ви зможете скинути -Pпрапор , так як ви можете передбачити session:window.paneтриплет: по sessionзамовчуванням поточної сесії і по paneзамовчуванням в 0той час windowбуде наступним вільним ідентифікатором вікна.

Повернути панель 3 назад:

Щоб отримати панель 3і розташування назад, виберіть панель 2і питання Prefix- :join-pane -vs 1:2.0говорити tmuxрозділити панель по 2вертикалі ( -v) і приєднатися до (джерело) панелі ( -s) з ідентифікатором 1:2.0. За бажанням можна скинути sessionабо paneідентифікатор, або . Зауважте також, що tmux зберігає історію командного рядка, зручно доступну за допомогою Prefix- :- Up.

Ймовірно, вам знадобиться певний час, щоб розвісити його, але як тільки ви це зробите, ви, безсумнівно, зможете придумати спеціальні прив’язки ключів, зручні для вас.


Це запитання містить корисну інформацію та рекомендації, які можуть покращити ваш робочий процес.


Чіткі інструкції! Для мене працює гладко, набагато краще, ніж моя відповідь!
Бернхард

За замовчуванням панель 3 буде розбита на останнє вікно, якщо у вас вже 3 вікна в поточному сеансі, панель стане Вікном 3 (припустимо, що вікно починається з 0), тому 3 у "Вікні 3" залежить від відкриті вікна, як я можу змусити цю роботу виконати спеціальні прив'язки клавіш?
CodyChan

5

Ідея: запустити tmux в tmux.

Оригінальна настройка:

Панель 1 і панель 2; поруч. Запустити vim на панелі 1 як звичайно.

На панелі 2 запустіть tmux ще раз і створіть дві області (одна на іншу на цей раз). Потім запустіть vim в області 2.1 і ваш CLI в області 2.2. Це повинно дозволити вам повноекранну панель 2.1 за допомогою другого примірника Vim, що призведе до потрібної поведінки.


це те, що я називаю нестандартним мисленням!
user881300

Дякую користувачу881300. Він має деякі недоліки (можливість відправки команд має декілька химер, наприклад). Я сподіваюсь оновити це на більш повну відповідь, коли я його перевіряю - мені також потрібна подібна функціональність.
BinaryBen

2
@ user881300 Технічно це поле в коробці мислення.
Mateen Ulhaq

3

Замість того, щоб приховувати панель 3, ви також можете трохи обдурити і зробити його дуже маленьким, що, ймовірно, також буде працювати для вашого випадку.

Коли активна панель 2 - це ви можете

PREFIX : resize-pane -D 40

Потім, щоб перемістити його знову, ви можете будь-який

PREFIX : resize-pane -D 28

де вам доведеться замінити 28 на гідне число, або, замість цього, ви можете спробувати PREFIXEsc4, що робить автоматичне зміна розміру.


Я змінював розмір панелі, використовуючи, set -g mouse-resize-pane onокрім зміни розміру, чи є у нас інший варіант?
user881300

@ user881300 Я не є tmuxекспертом жодним чином, але мені було б цікаво дізнатись, чи це можливо.
Бернхард

1
CTRL+B, ALT+<arrow direction to resize>, ніж CTRL+B, ESC, 4(thx @Bernhard), щоб відновити його.
FelikZ

1

Мені зараз це питання майже 5 років, але я просто знайшов його, тому що хотів зробити щось подібне, і я придумав наступні вкладки завдяки відповіді user78291 :

bind-key ! break-pane -d -n _hidden_pane
bind-key @ join-pane -s $.1

Таким чином я можу використовувати Prefix!приховати поточну панель і Prefix@повернути її назад. Приємна частина полягає в тому, що я можу приховати кілька панелей таким чином.

Це далеко не ідеально, але це добре приховує панелі та повертає їх досить добре.


0

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

Якщо ви не хочете візуально приховати панель, а просто хочете зупинити будь-який вхід, що йде на панель. Сценарій може бути, якщо ви хочете відправити команду на 5 відкритих панелей, але не хочете відправляти її на 2 з них.

У цьому випадку ви можете зробити ctrl + sна панелях, до яких не потрібно переходити команди ( ctrl + sблокує весь вхід до області).

Після завершення натисніть, ctrl + cщоб повернутися.

Примітка : Не натискайте ctrl + qпісля команд, оскільки вони будуть виконувати всі команди на цьому екрані. ctrl + cне зробить цього (спробував це на Ubuntu).

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