Вы, вероятно, можете использовать Vim :!
команда для запуска tmux send-keys
для отправки Control-R † на другую панель. Поскольку send-keys
могут отправлять нажатия клавиш на любую панель (не только активную), вам даже не нужно переключать активные панели вперед и назад.
Вот это отображение Vim (вы можете поместить его в ваш .vimrc
или просто вставить в :
подсказку, чтобы попробовать):
:map <Leader>rl :w<Bar>execute 'silent !tmux send-keys -t bottom C-r'<Bar>redraw!<C-M>
Это отображает последовательность клавиш \rl
(<Leader>
умолчанию \
, но ее можно настроить) на следующую последовательность команд Vim (разделенных <Bar>
; см . :help map_bar
):
- Запишите текущий буфер в его файл.
- Выполните команду tmux отправить Control-R на нижней ‡ панели.
Мы используем здесь execute
чтобы следующая команда Vim (redraw
) не принималась как часть :!
командная оболочка.
Мы используем silent
префиксную команду, чтобы избежать запроса «Нажмите ENTER для продолжения».
Вы можете опустить slient
если хотите получить приглашение или хотите увидеть результат :!
команда (например, команда tmux не работает, и вы хотите увидеть, выдает ли она сообщение об ошибке).
- Перерисовать экран.
Обычно это происходит после запроса «Нажать ENTER», но мы подавляем его silent
.
† Я не рысь под рукой, но Control-R , кажется, ключ перезарядка на основе моего поиска «рысь Reload» (т.е. «Перезагрузка файлов и обновление дисплея » руководства пользователя).
‡ Помимо bottom
, есть и другие способы указания целевой панели (найдите «target-pane» на странице руководства tmux):
.+1
, .- .-1
: следующая, предыдущая панель в этом окне
top
, bottom
, left
, right
и комбинации top
/bottom
с left
/right
(т.е. bottom-left
)
%42
(tmux 1.5+): номер панели с префиксом %
из переменной среды TMUX_PANE целевой панели
Эта последняя форма может быть полезна, если ваша панель Lynx не всегда находится в том же окне tmux, что и ваш экземпляр Vim. Перед запуском Lynx сохраните значение TMUX_PANE во временном файле, затем прочитайте файл, чтобы сформировать аргумент целевой панели:
# before running Lynx (anytime really, but "before" is usually scriptable)
echo "$TMUX_PANE" > /tmp/my-lynx-pane
# in the Vim :! command in the mapping:
tmux send-keys -t "$(cat /tmp/my-lynx-pane)" C-r