Вопрос или проблема
В 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: Поворот и изменение размера панелей
-
Вызовите команду для поворота панелей:
Нажмите клавишиCtrl + b
, затемo
(это переключит вас между панелями). -
Используйте команду для выбора панели:
После того как вы выбрали нужную панель (панель 3), вы можете разрезать ее:Ctrl + b, "%".
Это разделит активную панель вертикально.
Шаг 5: Увод панели на полный экран
Теперь необходимо сделать так, чтобы выбранная панель (текущая или та, что вы только что создали) занимала всю высоту:
- Нажмите
Ctrl + b
, затем:
для вызова командной строки. -
Введите следующую команду для удаления текущей панели и замены ее на полную высоту:
resize-pane -Z
Это действие будет увеличивать текущую панель до полного размера, убирая соседние панели.
Шаг 6: Привязка для удобства
Если вы хотите автоматизировать данный процесс, вы можете добавить собственную привязку клавиш в файл конфигурации tmux (~/.tmux.conf
). Например:
bind-key L select-pane -m \; split-window -hf \; swap-pane \; kill-pane \; select-pane -M
- Эта команда позволяет выбрать текущую панель, разделить ее на две (горизонтально), после чего поменять местами с соседней панелью и удалить временную панель.
Заключение
Теперь вы можете легко управлять панелями в tmux, изменяя их ориентацию и размеры в любое время. Такие операции могут значительно улучшить вашу продуктивность при работе в терминале, особенно если вы часто используете несколько панелей одновременно. Просто запомните комбинации клавиш и команды, и управление панелями станет для вас интуитивно понятным.