Я регулярно присоединяюсь к панелям в 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 %%'
Я подозреваю, что подход включает в себя что-то вроде следующей последовательности операций:
- Сплит окно
- Выберите окно (панель)
- нарисуй панели
- убить предыдущую панель (ту, которая содержала подсказку выбора окна)
Но когда я пытаюсь сделать что-то вроде следующего:
split-window -h ; choose-window 'join-pane -hs %%' ; kill-pane -t.-1
Убитая панель - это та, с которой я начал, а не та, которая использовалась для отображения подсказки. Действительно, изменение значения для kill-pane или выдача select-pane сначала, похоже, не имеет значения.
Возможно, этого нельзя сделать, возможно, есть способ переместить панель окна /0 на новую панель, но я не могу понять это. Возможно, есть какая-то комбинация интерактивных команд и вызовов
run "tmux <command> etc etc %%"
Это исправит это, но я не могу понять это. Идеи?