7

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

bind-key < command-prompt -p "create pane from #(tmux list-windows|awk -vORS='  ' '/^[0-9]/{print $1 $2}'):"  "join-pane -s ':%%'"

Но tmux не выполняет интерполяцию, как это делает другие команды, такие как «display-message», а сама подсказка принимает строку состояния, поэтому я не могу видеть номера окон и заголовки.

Мой второй подход состоял в том, чтобы попытаться использовать окно выбора, которое отображает интерактивный список окон:

bind <выберите окно "join-pane -hs %%"

Это в основном работает, но занимает все текущее окно, пока я выбираю. Я хотел бы сделать что-то похожее на bufexplore в vim, где сначала разбивается окно, а затем на новой панели появляется подсказка, где я выбираю окно, чтобы открыть его. Следующее, кажется, довольно близко к тому, что я хочу, но у меня осталась панель, которая использовалась для отображения приглашения, сидящего без дела:

bind < split-window -h \; choose-window 'join-pane -hs %%'

Вместо этого я бы переместил окно, но, насколько я могу судить, вы не можете переместить окно на панель (или вообще переместить панель без присоединения), и следующее не работает:

bind < split-window -h ; choose-window 'move-window -s %%'

Я подозреваю, что подход включает в себя что-то вроде следующей последовательности операций:

  1. Сплит окно
  2. Выберите окно (панель)
  3. нарисуй панели
  4. убить предыдущую панель (ту, которая содержала подсказку выбора окна)

Но когда я пытаюсь сделать что-то вроде следующего:

split-window -h ; choose-window 'join-pane -hs %%' ; kill-pane -t.-1

Убитая панель - это та, с которой я начал, а не та, которая использовалась для отображения подсказки. Действительно, изменение значения для kill-pane или выдача select-pane сначала, похоже, не имеет значения.

Возможно, этого нельзя сделать, возможно, есть способ переместить панель окна /0 на новую панель, но я не могу понять это. Возможно, есть какая-то комбинация интерактивных команд и вызовов

run "tmux <command> etc etc %%"

Это исправит это, но я не могу понять это. Идеи?

1 ответ1

4

Вы можете убить начальную, временную панель перед тем, как панель join-pane заново разделит окно:

bind < split-window -h \; choose-window 'kill-pane ; join-pane -hs %%'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .