Intereting Posts

TMUX: После сплит-окна, как узнать новый идентификатор панели?

Это похоже на достаточно простую процедуру, которую я пытаюсь выполнить, но я искал безрезультатно. Я хотел бы создать привязку ключей, которая делает разделенное окно, а затем посылает ключи на вновь созданную панель; однако мне нужен идентификатор панели для использования с командой send-keys. Уловка заключается в том, что я НЕ знаю, сколько окон открыто в окне; поэтому я не знаю, как запустить код в исходной панели, чтобы определить, каким будет новый индекс панели. Есть ли способ узнать этот новый индекс или идентификатор (любой из них можно использовать в качестве цели)?

Благодарю.

Вы слишком задумываетесь о своей проблеме. Когда вы делаете split-window новая панель становится текущей целью для send-keys . Вы не должны вызывать tmux в привязке, поскольку вы уже находитесь в tmux. Пытаться

 bind-key s split-window \; send-keys "pwd" Enter 

Ну, я все же предпочел бы найти прямой способ получить новый идентификатор панели, но я, по крайней мере, смог выполнить свою задачу, вызвав скрипт оболочки вместо того, чтобы пытаться сделать все это в tmux.conf. Кажется, kludgy для меня, но это работает. tmux.conf:

 bind s run-shell "~/bin/tmux_split_pane.sh '#{window_id}' '#{pane_id}'" 

и сценарий:

 #!/bin/sh current_window_id=$1 current_pane_id=$2 tmux split-window -t $current_pane_id new_pane_id=$(tmux list-panes -t "$current_window_id" | awk '{ print $7; }' | sort | tail -1) tmux send-keys -t $new_pane_id -l "update_env" \; send-keys -t $new_pane_id Enter 

В tmux каждая новая панель получает уникальное значение, к которому вы можете получить доступ, используя переменную среды TMUX_PANE . tmux display -pt "${TMUX_PANE:?}" '#{pane_index}' это покажет номер панели.