Como enviar a chave para sair do modo de rolagem no tmux?

7

Eu tenho um mapeamento de chaves no VIM que se parece com isso:

map <F5> :silent !tmux send-keys -t 0:0 C-m "python %" C-m<cr>

Quando pressiono F5, o vim executa meu script Python atual na sessão 0 do tmux, janela 0. No entanto, se a janela 0 estiver atualmente em um estado de rolagem (ou seja, Shift-PgUp ou rolagem do mouse), o tmux executará o comando, mas não rolará na nova saída.

Como faço para enviar uma chave para a janela do tmux que irá sair do modo de rolagem? (Eu quero rolar na saída)

Observação : normalmente saio do modo de rolagem pressionando Esc, mas não consegui descobrir como enviar uma chave Escape usando tmux send-keys . Eu tentei enviar C-[ , mas isso não funcionou.

    
por Gilead 18.08.2012 / 00:05

1 resposta

3

Você pode enviar literal escape (e nova linha) com aspas ANSI-C (há mais sobre isso aqui ), por exemplo para enviar escape para 0:0 :

tmux send-keys -t 0:0 $'\e'

Para o seu mapeamento, supondo que eu entendi corretamente, você poderia fazer algo assim:

map  <F5> :silent !tmux send-keys -t 0:0 $'\e'"python"$'\n'<CR>

Note que o escape sempre será enviado, então, para contornar a questão do shell que está recebendo o escape, você pode enviar uma nova linha extra:

map  <F5> :silent !tmux send-keys -t 0:0 $'\e'$'\n'"python"$'\n'<CR>
    
por 18.08.2012 / 12:49

Tags