Vim 在后台执行进程

Bri*_*unt 5 bash vim macos

我想在 Mac OS X(或一般的 Unix)上的 Vim 中在后台运行一个进程。

我希望并期待以下或一些变体来实现这一点:

execute "!my_command &"
Run Code Online (Sandbox Code Playgroud)

或者

!my_command &
Run Code Online (Sandbox Code Playgroud)

或者

!my_command \&
Run Code Online (Sandbox Code Playgroud)

或其他一些替代方案。

不幸的是,这似乎根本没有执行my_command。我希望有一些轻量级的选择。

一种选择是编写一个包装器脚本来分叉命令并退出,但我确定有人已经这样做了(GNU Parallel?)。

实现这一目标的最佳方法是什么?

Tho*_*hor 7

这可能是因为my_command需要一个终端进行交互。你可以提供一个带有 GNU screen 或 tmux 的,例如:

!screen -dm "my_command"
Run Code Online (Sandbox Code Playgroud)

或者:

!tmux new -d "my_command"
Run Code Online (Sandbox Code Playgroud)


rom*_*inl 7

下面的所有命令在 MacVim(快照 66)中执行时都按预期工作,我很确定它们可以在我家里的 Ubuntu 机器上工作:

!mplayer song.mp3 &
:execute "!mplayer song.mp3 &"
:call system("mplayer song.mp3 &")
Run Code Online (Sandbox Code Playgroud)

如果它不适合您,您可以尝试允许您运行异步命令的少数脚本之一:

(我刚刚看到雷神解决了你的问题)