Posso “executar” corretamente um vimscript em segundo plano?

0

Eu gostaria de executar um pedaço de script vim em segundo plano (preferencialmente no windows, embora se ele funcionar somente no * nix, tudo bem também)

A ideia seria a seguinte:

  • O usuário chama a função vimscript (provavelmente por meio de uma tecla de atalho)
  • Atualizações da barra de status para informar que o processo está sendo executado
  • Script de plano de fundo (bash ou windows batchfile) é iniciado - posso continuar trabalhando
  • Algum tempo depois (digamos, alguns segundos) - o script é concluído e a barra de status é atualizada.

se eu apenas executar o script com um e comercial, o script será executado em segundo plano e a barra de status será atualizada imediatamente para ser concluída. Se eu executar o script sem o Ampersand, ele me impedirá de fazer qualquer outra coisa até que seja concluído.

Este e Isso sugere que não é possível, mas pensei em perguntar aqui.

    
por phatmanace 05.06.2015 / 23:06

1 resposta

2

Executar o Vimscript de forma assíncrona na mesma instância do Vim é realmente impossível, e há uma probabilidade muito maior de você ver esse recurso no Neovim primeiro.

Dito isso, você pode executar comandos externos de forma assíncrona, e retornar informações para a instância atual do Vim.

  • Uma abordagem simples seria pesquisar por um arquivo externo (que é preenchido pelo comando externo com seus resultados). Isso pode ser feito por meio de autocmd CursorHold ou da avaliação de 'statusline' (mas não com frequência, para evitar a redução da edição).
  • O script externo também pode "chamar de volta" para a instância original do Vim por meio do recurso cliente-servidor (cp. :help new-vim-server ). Você teria que passar v:servername para o script e, em seguida, retornar via vim --servername {name} --remove-expr . Nota: No Unix, esse recurso requer um servidor X, portanto, você limitaria a aplicabilidade com essa abordagem.
  • O plug-in vim-misc implementa o último como avaliação do Vimscript em uma segunda instância do Vim; isso fica o mais próximo possível da avaliação assíncrona do Vimscript.
por 06.06.2015 / 12:24

Tags