实际上,我需要做的是从GVim
的插入模式中CTRL-Z退出一个进程。
我的命令:Cdprun
执行cdprun.sh
,它运行一个sudo-ed守护进程。我可以在sudo-ed守护进程调用的末尾添加&
以在后台运行,这样可以工作,但用户不会被提示输入密码。相反,我想只是CTRL-Z退出它,但键盘中断不起作用。有什么想法吗?谢谢。
在这种情况下,通常有两个选择:一是使用像@Nicalas Martin提到的vim-addon-async这样的通用工具,或者使用支持内置解释器的vim:tcl与expect模块、python与pyexpect、perl与Expect,也许还有其他一些(注意:所有提到的软件包都不随tcl/python/perl一起发行)。第二个选项与当前情况特定相关:在其他地方进行后台处理。根据您的解释,我猜测您有一个类似于以下脚本:
#!/bin/sh
<...>
sudo run-daemon --daemon-args # Last executed line
我对吗?那么你可以把“backgrounding”放在另一个地方:不要
sudo run-daemon --daemon-args &
但是
sudo sh -c "nohup run-daemon --daemon-args &"
这里是一个处理Vim异步命令的脚本。虽然不是完美的解决方案,但可以作为一个好的临时解决方案。http://www.vim.org/scripts/script.php?script_id=3307