Provavelmente você pode usar o comando Vim :!
para executar tmux send-keys
para envie um Control-R † para o outro painel. Como o send-keys
pode enviar pressionamentos de teclas para qualquer painel (não apenas o ativo), você nem precisa alternar os painéis ativos para frente e para trás.
Aqui está um mapeamento do Vim (você pode colocá-lo no seu .vimrc
ou apenas colá-lo no prompt :
para experimentá-lo):
:map <Leader>rl :w<Bar>execute 'silent !tmux send-keys -t bottom C-r'<Bar>redraw!<C-M>
Isso mapeia a sequência de teclas \rl
(os padrões <Leader>
são definidos como \
, mas pode ser personalizado), para a seguinte sequência de comandos do Vim (separados por <Bar>
; consulte :help map_bar
):
- Escreva o buffer atual em seu arquivo.
- Execute o comando tmux para enviar o Control-R para o painel ‡ inferior.
Usamosexecute
aqui para que o próximo comando Vim (redraw
) não seja considerado parte do comando:!
shell.
Usamos o comandosilent
para evitar o aviso "Pressione ENTER para continuar".
Você pode omitirslient
se você quiser o prompt ou quiser ver a saída do comando:!
(por exemplo, o comando tmux não está funcionando e você deseja ver se está dando erro mensagem). - Redesenhar a tela.
Isso normalmente ocorre após o prompt "Press ENTER", mas estamos suprimindo-o comsilent
.
† Eu não tenho lynx em mãos, mas o Control-R parece ser a chave de recarga baseada em minha pesquisa por “reload lynx” (ie "Recarregar arquivos e atualizar a exibição" do guia do usuário.
‡ Além de bottom
, existem outras formas de especificar o painel de destino (procure por “target-pane” no página de manual do tmux ):
-
.+1
,.-1
: próximo painel anterior nesta janela -
top
,bottom
,left
,right
e combinações detop
/bottom
comleft
/right
(por exemplo,bottom-left
) -
%42
( tmux > 1.5+): um número do painel pré-mes%%
da variável de ambiente TMUX_PANE do painel de destinoEste último formulário pode ser útil se o seu painel Lynx não estiver sempre na mesma janela tmux da sua instância do Vim. Antes de iniciar o Lynx, salve o valor de TMUX_PANE em um arquivo temporário e leia o arquivo para formar o argumento do painel de destino:
# 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