Vim Execute Process in Background

Vim Execute Process in Background

I would like to run a process in the background in Vim on Mac OS X (or Unix in general).

I would hope and expect the following, or some variant, to accomplish this:

execute "!my_command &"

or

!my_command &

or

!my_command \&

or some other alternative.

Unfortunately this does not seem to execute my_command at all. I would expect there to be some lightweight option.

One option would be to write a wrapper script that forks the command and exits, but I'm sure someone has done that already (GNU Parallel?).

What is the best way to accomplish this?

2

2 Answers

This might be because my_command needs a terminal to interact with. You could provide one with GNU screen or tmux, e.g.:

!screen -dm "my_command"

Or:

!tmux new -d "my_command"
1

All of the commands below work as expected when executed in MacVim (snapshot 66), and I'm pretty sure they would work on my Ubuntu box at home:

!mplayer song.mp3 &
:execute "!mplayer song.mp3 &"
:call system("mplayer song.mp3 &")

If it doesn't work for you, you could try one of the few scripts that allow you to run asynchronous commands:

(and I just saw that Thor solved your problem)

3

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Robert Thorne
Author

Robert Thorne

Robert Thorne covers electric vehicle innovations, autonomous driving systems, global mobility trends, and automotive engineering developments.