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

Короткий ответ: нет. В терминалах GNU / Linux нет «команды отмены».

Хотя многие команды имеют обратные операции, такие как переименование, сжатие, распаковка и т. Д.

3
05.07.2017, 23:14
5 ответов

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

bind-key s split-window \; send-keys "pwd" Enter
0
27.01.2020, 21:15

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

1
27.01.2020, 21:15

Что ж, я все же предпочел бы найти прямой способ получить новый идентификатор панели, но я, по крайней мере, смог достичь своей цели, вызвав сценарий оболочки вместо того, чтобы пытаться сделать все это в tmux.conf.. Мне кажется коряво, но работает. 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 -F '#{pane_id}' -t "$current_window_id" | sort -n --key=1.2 | tail -1)
tmux send-keys -t $new_pane_id -l "update_env" \; send-keys -t $new_pane_id Enter
1
27.01.2020, 21:15

Я сделал это, отправив идентификатор новой панели обратно через именованный канал.

mkfifo pane_id
tmux split-window -h \; send-keys 'echo $TMUX_PANE > pane_id' Enter \; select-pane -t "$TMUX_PANE"
cat pane_id
1
27.01.2020, 21:15

Еще один способ, особенно полезный для сценариев оболочки.

tmux split-window -P -F "#{pane_id}"

выводит идентификатор панели, (, например. %4 )в стандартный вывод

так что вы можете сделать

bash_var=$(tmux split-window -P -F "#{pane_id}")

, если вы хотите записать его в переменную оболочки/bash.

Взято изhttps://github.com/tmux-plugins/tmux-sidebar/blob/master/scripts/toggle.sh

5
27.01.2020, 21:15

Теги

Похожие вопросы