Вероятно, вы можете использовать :!
команду 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
.
† У меня нет lynx под рукой, но Control-R, кажется, является ключом перезагрузки, основанным на моем поиске «перезагрузки lynx» (то есть «Перезагрузка файлов и обновление дисплея» руководства пользователя).
‡ Кроме того 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