Вы, вероятно, можете использовать 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