Я использую tmux 1.8 и не нашли встроенное решение. Эти обходные подходят по крайней мере, для моих частых случаев применения:
- Capture полного содержимого панели и поиск последней команды SSH в нем (я использую знание об окончании моей подсказки, чтобы обнаружить команду более или менее надежно)
- Если это не удается проверить команду на панели может быть создана с помощью
shell-command
варианта tmux new-window
или split-window
команд
Моего reconnect.sh
сценарий выглядит следующим образом. Самое грязное в этом - это способ получить последнюю команду ssh из буфера. До сих пор «> ssh» было достаточно для того, чтобы мои ситуации надежно обнаруживали строку, содержащую запрос на соединение ssh, но любое лучшее решение было бы оценено.
#!/bin/bash
# @TODO: change this according to your own prompt
# This is used to find lines connect ssh command in the pane buffer
PROMPT_SEPARATOR="> "
# get current pane buffer size and dimensions
HISTORY_LIMIT=`tmux display-message -p "#{history_limit}"`
VISIBLE_LINES=`tmux display-message -p "#{pane_height}"`
# search last ssh command in pane content
LINE=`tmux capture-pane -p -J -S -$HISTORY_LIMIT -E $VISIBLE_LINES | grep "${PROMPT_SEPARATOR}ssh " | tail -1`
if [ -n "$LINE" ]; then
echo $LINE | sed "s/.*$PROMPT_SEPARATOR//;"
else
# fall back to the command that might have been used to create the pane
# (not necessarily ssh but helpful anyway)
tmux list-panes -F "#{pane_active} #{pane_start_command}" | grep "^1 " | tail -1 | cut -d ' ' -f2-
fi
Я сохранил этот сценарий в моем ~/.tmux каталог и измененные комбинации клавиш для различных split-window
и new-window
ярлыков в моем .tmux.conf
похож на это:
# try to reconnect to remote host when creating new window
bind c run-shell 'CMD=`~/.tmux/reconnect.sh`; tmux new-window "$CMD"'
Вы можете установить tmux в вашей домашней директории на удаленная машина? Без tmux ssh предоставляет только один терминал. – chepner
Вот в чем проблема: я ничего не могу установить на удаленном компьютере .. политика – user1019129