Как я могу переориентировать панель и сделать её на всю высоту экрана в tmux?

Вопрос или проблема

В tmux у меня сейчас такие позиции окон:

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

Затем я хочу взять третью панель и сделать её вертикальной на полную высоту, как это:

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

В Vim есть команда для этого <C-w>L – как я могу сделать это в tmux?

Вот что я смог придумать, и, возможно, это будет слишком запутанно для использования, но если это необходимо, то работает.
Согласно комментариям @cuonglm, основная команда для реорганизации оконных панелей так, чтобы хотя бы одна из них была полной высоты, это:

  • prefixspace

Проблема в том, что то, что мне нужно, не определено в предустановленных макетах, поэтому мне пришлось продолжать нажимать prefixspace, пока я не получил это:

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

Затем поворачиваю с помощью prefixo, пока не получу это:

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

Затем вы можете выполнить

  • prefix: – чтобы открыть командную строку
  • :move-pane -h -s 1 -t 0

Где -h (я предполагаю) означает распределить панели горизонтально – и не относится к вертикальной полосе между ними.
Итак, в конце концов, вы получите это:

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

Я предполагаю, что это больше не актуально для автора вопроса, но для всех, кто наткнется на это в будущем, вот что я использую:

bind-key L select-pane -m \; split-window -hf \; swap-pane \; kill-pane \; select-pane -M
  • select-pane -m – пометить текущую панель, используется swap-pane, если -s (источник) не указан.
  • split-window -hf – разделить окно горизонтально и сделать так, чтобы новая панель заполнила всё вертикальное пространство. Новая панель становится текущей панелью.
    Обратите внимание, что это всегда помещает новую панель совсем вправо, даже если у вас изначально было что-то вроде этого:
+---------------------+---------------------+
|                     |                     |
|         1           |                     |
+---------------------+                     |
|                     |                     |
|         2           |          4          |
|                     |                     |
+---------------------+                     |
|                     |                     |
|         3*          |                     |
|                     |                     |
+---------------------+---------------------+
  • swap-pane – обменять текущую панель и отмеченную панель. Исходная панель теперь в позиции полной высоты, а вновь созданная временная панель активна и там, где раньше была исходная панель.
  • kill-pane – убить текущую (временную) панель
  • select-pane -M – снять отметку с исходной панели (необязательно)

У меня есть аналогичные привязки для J, K и H, только с другими аргументами для split-window:

  • -b – создать новую панель слева или сверху.
  • -v – разделить вертикально
  • -h – разделить горизонтально

(Это заменит предустановленное сочетание клавиш для L, так что если это проблема для вас, просто поместите это под отдельную таблицу клавиш.)

Ответ или решение

Чтобы занять весь экран высотой в терминальном мультиплексоре tmux, вам необходимо изменить ориентацию одной из панелей. В данном случае, вы хотите изменить ориентацию третьей панели так, чтобы она занимала всю высоту. Я дам вам пошаговые инструкции о том, как этого добиться, а также возможные команды и привязки клавиш, которые могут оказаться полезными.

Шаг 1: Установка tmux

Если у вас еще не установлен tmux, вы можете установить его с помощью менеджера пакетов вашей операционной системы. Например, на Ubuntu это можно сделать с помощью команды:

sudo apt install tmux

Шаг 2: Вход в сессию tmux

Запустите tmux, выполнив команду:

tmux

Шаг 3: Изменение конфигурации

Для достижения желаемого результата можно использовать комбинацию команд в tmux. Предположим, что ваши панели изначально располагаются следующим образом:

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

Вы хотите изменить размещение панели 3, чтобы она занимала всю высоту. Перейдем к шагам, которые вам нужно будет выполнить.

Шаг 4: Поворот и изменение размера панелей

  1. Вызовите команду для поворота панелей:
    Нажмите клавиши Ctrl + b, затем o (это переключит вас между панелями).

  2. Используйте команду для выбора панели:
    После того как вы выбрали нужную панель (панель 3), вы можете разрезать ее:

    Ctrl + b, "%".

    Это разделит активную панель вертикально.

Шаг 5: Увод панели на полный экран

Теперь необходимо сделать так, чтобы выбранная панель (текущая или та, что вы только что создали) занимала всю высоту:

  1. Нажмите Ctrl + b, затем : для вызова командной строки.
  2. Введите следующую команду для удаления текущей панели и замены ее на полную высоту:

    resize-pane -Z

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

Шаг 6: Привязка для удобства

Если вы хотите автоматизировать данный процесс, вы можете добавить собственную привязку клавиш в файл конфигурации tmux (~/.tmux.conf). Например:

bind-key L select-pane -m \; split-window -hf \; swap-pane \; kill-pane \; select-pane -M
  • Эта команда позволяет выбрать текущую панель, разделить ее на две (горизонтально), после чего поменять местами с соседней панелью и удалить временную панель.

Заключение

Теперь вы можете легко управлять панелями в tmux, изменяя их ориентацию и размеры в любое время. Такие операции могут значительно улучшить вашу продуктивность при работе в терминале, особенно если вы часто используете несколько панелей одновременно. Просто запомните комбинации клавиш и команды, и управление панелями станет для вас интуитивно понятным.

Оцените материал
Добавить комментарий

Капча загружается...