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 passarv:servername
para o script e, em seguida, retornar viavim --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.