0

我想要做的是让 Xdebug 调试器在 vim 会话中的文件上运行,所有这些都来自 perl 脚本。如果我想从命令行执行此操作,我会打开 vim,然后在 vim 中发出一个命令(特定于调试器),使 vim 监听端口 9000(在正常模式下按 F5),然后打开页面 I想要在浏览器中调试,这会在 vim 中启动调试会话。我已经成功地做到了这一点。

为了在 perl 中做这件事,我的想法是使用 fork 和系统调用。

use LWP::Simple;

if ($pid = fork) {
    system('vi -c ":normal ^[[15~"');
} else {
    sleep;
    get 'http://localhost/homepage/index.php?XDEBUG_SESSION_START=1';
    exit(0);
}

('-c ":normal ^[[15~"' 选项使 vim 通过等待端口 9000 上的新连接来启动。)

这行不通。据我所知,这个问题似乎与套接字有关。有没有办法让太多的进程在 perl 中通过这样的连接相互交谈?

4

1 回答 1

0

从 vim 内部建立连接有效:

vim -c 'let x = system("sleep 2; wget http://localhost/homepage/index.php?XDEBUG_SESSION_START=1; &")' -c 'normal ^[[15~'
于 2013-11-10T15:23:46.210 回答