Posso fazer o Tmux informar ao Vim quando o painel perde o foco?

7

Eu uso o Vim and Bash lado-a-lado no Tmux. Eu tenho o Vim configurado para arquivos salvos automaticamente quando eu alterno entre eles, mas eu realmente gostaria que ele fosse salvo automaticamente quando eu alternasse para o painel Bash.

Existe uma maneira de fazer com que o Tmux envie algum tipo de código para o Vim quando o painel perde o foco?

    
por Peeja 02.03.2012 / 23:09

2 respostas

6

Provavelmente, isso é melhor feito usando o modelo cliente-servidor de vim . Há uma boa orientação sobre como usá-lo em :help remote.txt .

Primeiramente, você precisará de um cliente vim compilado com a opção +clientserver . Se a sua distribuição não empacotar desta forma, obtenha a fonte (através de apt-get source , abs , et al) e adicione essa opção.

Uma vez feito isso, você precisará religar suas chaves em tmux para que, quando você mudar de janela, ele envie algo semelhante ao seguinte para a janela ativa:

vim --servername foo --remote-send '<C-\><C-N>:w<CR>'  

Algo como o seguinte deve funcionar (não testado):

bind-key 0 run-shell "vim --servername foo --remote-send '<C-\><C-N>:w<CR>'" \; select-window -t :0
    
por 02.03.2012 / 23:37
2

Alguém já fez esse trabalho para você em um plug-in vim - link

Do README:

(Vit)ality is a plugin that makes (V)im play nicely with (i)Term 2 and (t)mux.

Se você estiver usando o vim e o tmux juntos, talvez também esteja interessado no plug-in vimux .

By default when you call RunVimTmuxCommand vimux will create a 20% tall horizontal pane under your current tmux pane and execute a command in it without losing focus of vim. Once that pane exists whenever you call RunVimTmuxCommand again the command will be executed in that pane.

Pense nos testes de repetição com frequência.

    
por 18.04.2012 / 21:41

Tags