Короткий ответ: нет. В терминалах GNU / Linux нет «команды отмены».
Хотя многие команды имеют обратные операции, такие как переименование, сжатие, распаковка и т. Д.
Вы перестали -думать о своей проблеме. Когда вы делаете split-window
, новая панель становится текущей целью для send-keys
. Вы не должны вызывать tmux в привязке, так как вы уже находитесь в tmux. Попробуйте
bind-key s split-window \; send-keys "pwd" Enter
В tmux каждая новая панель получает уникальное значение, доступ к которому можно получить с помощью переменной среды TMUX _PANE . tmux display -pt "${TMUX_PANE:?}" '#{pane_index}'
это покажет номер панели.
Что ж, я все же предпочел бы найти прямой способ получить новый идентификатор панели, но я, по крайней мере, смог достичь своей цели, вызвав сценарий оболочки вместо того, чтобы пытаться сделать все это в 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
Я сделал это, отправив идентификатор новой панели обратно через именованный канал.
mkfifo pane_id
tmux split-window -h \; send-keys 'echo $TMUX_PANE > pane_id' Enter \; select-pane -t "$TMUX_PANE"
cat pane_id
Еще один способ, особенно полезный для сценариев оболочки.
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