Isso pode ser porque my_command
precisa de um terminal para interagir. Você poderia fornecer um com a tela GNU ou tmux, por exemplo:
!screen -dm "my_command"
Ou:
!tmux new -d "my_command"
Eu gostaria de executar um processo em segundo plano no Vim no Mac OS X (ou no Unix em geral).
Espero e espero que o seguinte, ou alguma variante, faça isso:
execute "!my_command &"
ou
!my_command &
ou
!my_command \&
ou alguma outra alternativa.
Infelizmente, isso não parece executar my_command
. Eu esperaria que houvesse alguma opção leve.
Uma opção seria escrever um script wrapper que bifurque o comando e saia, mas tenho certeza que alguém já fez isso ( Paralelo GNU ?).
Qual é a melhor maneira de conseguir isso?
Todos os comandos abaixo funcionam como esperado quando executados no MacVim (snapshot 66), e eu tenho certeza que eles iriam trabalhar na minha caixa Ubuntu em casa:
!mplayer song.mp3 &
:execute "!mplayer song.mp3 &"
:call system("mplayer song.mp3 &")
Se não funcionar, você pode tentar um dos poucos scripts que permitem executar comandos assíncronos:
(e acabei de ver que Thor resolveu seu problema)