Я думал, что перемещение панели tmux в окно - это тот же вопрос, но это не так.
Исходя из регулярного использования экрана GNU, я ищу tmux для того же. Одна из вещей, которые я делаю регулярно, - это открыть несколько разных окон, одно с некоторым кодом, открытым в vim, и несколько окон терминалов, открытых для тестирования кода, и иногда одно или два окна для различных других вещей. Я разделил экран по вертикали, и у меня часто будет окно vim на верхней панели, а затем одно из других окон на нижней панели.
Основные команды Затем я использую являюсь Ctrla, Tabчтобы вращать между стеклами и Ctrla, nчтобы вращать между окнами внутри панели. Например, с vim на верхней панели я переключаюсь на нижнюю панель, а затем поворачиваюсь через другие терминалы, делая все, что мне нужно. Экран остается разделенным все время.
Проблема в том, что я не могу найти возможности, сравнимые с возможностями экрана Ctrla, nв tmux. Переключение окон, кажется, не работает внутри панели, но полностью переключается. Если экран разделен, кажется, что только два варианта - перейти к какому-либо не разделенному окну, а затем разделить его или выполнить подразделение панели. Не то, что я искал.
Предложения (кроме просто придерживаться экрана)?
источник
tmux
окне можно разбить на несколько панелей. Вы пытаетесь переключаться между панелями в окне с помощью клавиш?swap-pane
? Если вы хотите эмулировать экранCtrl-a n
, то эквивалент tmux естьCtrl-b n
.Ответы:
Tmux и экран имеют разные модели, поэтому точного эквивалента нет.
В терминах экрана , разделение позволяет отображать несколько окон одновременно.
next
(C-a n
) вращает окна через активную часть разбиения; это позволяет вращать «скрытые» окна через активную область разделения.В терминах Tmux разделение делит окно на одну или несколько панелей. Каждая часть разделенного окна является отдельной панелью, панели никогда не скрываются (если окно выбрано (видно), все его панели тоже), и панель может использоваться только в одном разделении одного окна (панель может не может быть в нескольких окнах и не может быть в нескольких разделениях одного и того же окна). Есть команды для перемещения панелей вокруг в (или между) окнами, но не идентичным образом , чтобы
next
в экране .Вы можете использовать привязку, подобную следующей, чтобы организовать похожий эффект:
Возможно, вы захотите поместить это в свой
~/.tmux.conf
файл, но вы можете просто напечатать / вставить его, Prefix :чтобы связать его с текущим экземпляром сервера.Чтобы использовать привязку, выберите ваше «главное окно», разделите его, создайте окно «Контейнер панели» сразу после «главного окна», затем используйте привязку для поворота любой панели в «главном окне» среди группы в « окно контейнера ».
Вот как вы можете создать настройки:
Выберите окно для использования в качестве «основного окна». Начать (например) Vim в нем.
Разделите ваше «главное окно» на две панели.
Например Prefix "(
:split-window
)Вы можете использовать эту панель в качестве окна тестирования (или просмотра журнала, или чего-либо еще).
Создайте новое окно («контейнер панели») сразу после основного окна.
Например Prefix c(
:new-window
)Важно, чтобы никакое другое окно не попадало между индексами «главного окна» и окна «контейнера панели» (
+
в спецификаторах окна, используемых в связанных командах, имеется в виду «следующее окно с более высоким номером»).Разбейте это окно на несколько панелей. Чтобы повернуть через три панели, разделите это окно на две панели (третья панель - это та, которая находится в «главном окне»).
Может быть, вам нужна оболочка для git и оболочка для запуска интерфейса базы данных. Поместите каждую в отдельную панель в этом окне «Контейнер панели».
Вернитесь к своему «главному окну». Выберите панель, которую вы хотите «повернуть».
Вы можете использовать Prefix Up/ Down/ Left/ Rightдля перемещения по панелям.
Вызвать привязку, чтобы поменять текущую панель на первую панель в окне «контейнер панели» и («за кулисами») повернуть панели внутри окна «контейнер панели» (чтобы при следующем запуске привязки первая команда меняет местами следующую панель в последовательности).
Prefix Control- n(в привязке используется Cn, но вы можете изменить это на что угодно).
Для прокрутки назад по панелям вы можете использовать ниже:
источник
resize-pane -Z
(по умолчанию привязанный к Prefix + z), который временно «увеличивает» панель до полного размера окна. Для версии до 1.8 не было встроенного способа сделать это; другие создавали скриптовые решения из других встроенных команд (например, некоторые ответы на вопрос SU «Максимизация» панели в tmux ).C-b o
циклы стеклопакетов.Я считаю , что вы ищете Ctrlb+ ( →, ←, ↑, ↓). Это позволит вам перемещаться между панелями.
источник
Ctrl-b+{
илиCtrl-b+}
? Это примерно так близко, как я могу найти к этой функциональности. В tmux панели не выполняются так же, как на экране.^b↑
. Как мне тогда на самом деле сфокусировать подсвеченную панель так, чтобы↑
оболочка захватила другую , а не tmux?используйте
bind -r
, чтобы вы могли нажатьprefix
один раз, затем другие клавиши в последовательности, чтобы найти вашу панель. Время ожидания может быть скорректированоrepeat-time
. Проверьтеman tmux
Если вы предпочитаете
hjkl
,источник
Вот небольшая конф, которая позволяет вам перейти к другим панелям или окнам с помощью сочетания клавиш ALT или SHIFT + стрелка. Не нужно использовать префикс ключа удобно.
Если вы более ленивый, чем я, вас может заинтересовать следующий код, который позволяет перемещаться по панелям с помощью мыши. (использование: префикс ключа + m для включения, M для его выключения)
этот конфиг должен работать работает наверняка для tmux 1.6 до 1.9.
источник
Этот ответ дает вам две панели, где обе панели содержат один и тот же набор окон, но каждая панель может независимо переключаться между окнами.
Подход tmux заключается в использовании трех сессий:
Да, это философия UNIX сошла с ума. Давайте начнем:
Теперь вы можете переключиться на верхнюю панель и открыть Vim как обычно. Для циклического перемещения по окнам во внутренней сессии (нижняя панель) вам нужно использовать Ctrl-b Ctrl-b nи p.
Хорошо, теперь вместо того, чтобы открывать Vim на верхней панели, давайте снова подключимся к вашему внутреннему сеансу. Выйдите из vim, и на этот раз используйте
new-session
команду (особенно с-t
not-s
):Вуаля! Теперь вы можете переключаться между окнами на верхней и нижней панелях.
Причина, по которой мы должны использовать
new-session -t
второй раз, заключается в том, что если бы мы просто делали этоattach -t
снова, то верхняя и нижняя панели были бы синхронизированы, всегда показывая одно и то же окно, а это не то, что вам нужно. Чтобы позволить этой панели перемещаться по окнам независимо от другой панели, мы создаем новый сеанс «просмотра», но подключаем его бэкэнд непосредственно к существующему сеансу, который содержит окна. Это также известно как « сгруппированные сессии ». (Кстати, эта ссылка также предлагает использовать[un]link-window
для перемещения окон между сессиями.)Конечно, для симметрии, вы могли бы также работать
tmux new-session -t inner
в нижней панелиattach
. В этом случае вы будете запускать 4 экземпляра tmux (плюс еще один процесс tmux для сервера)!источник
Вставьте следующий код в ваш
.tmux.conf
:Перезагрузите конфигурацию, затем вы можете нажать (непосредственно без клавиши префикса) Shift+ →для циклического перемещения панелей по часовой стрелке и Shift+ ←для циклического изменения в обратном направлении.
Протестировано в Tmux 2.8.
Если вы не хотите редактировать конфигурацию, prefix+ o- это привязка клавиш по умолчанию для цикла по часовой стрелке. Иногда я находил эту привязку клавиш, затем получал команду
tmux list-keys
и использовал ее для своих собственных привязок клавиш:источник