1

我是 Node 和 vim 的新手。

我有以下代码文件 server.js 在 vi​​m 中打开:

var http = require("http");

function onRequest(request, response) {
    console.log("Request received");
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Hello World");
    response.end();
}

http.createServer(onRequest).listen(8888);

console.log("Server has started");

当我进入 vim“命令”模式并输入:

:!node server.js

事情按预期工作(我认为)。窗口变为标准终端窗口,如果我打开浏览器并导航到端口 8888 上的 localhost,则会显示愚蠢的“Hello World”文本。

终端显示“服务器已启动”文本,以及接收到请求的输出。一切都很好。

当我关闭浏览器窗口并键入Ctrl-z to停止节点服务器时,终端会显示[1}+ stopped vim server.js,但不会将我返回到我在 vim 中的代码文件。

如果我通过键入返回 vim vim,vim 将打开到同一目录,但我的文件未打开。如果我尝试打开文件,vim 会抱怨交换文件重复。显然我可以使用 [R]ecover 选项,但似乎我错过了一步。

我在这里想念什么?

我已经用谷歌搜索并搜索了 SO,但我不确定除了这个问题的标题之外我要问什么(它没有产生我正在寻找的答案,或者如果它产生了,我不认识它)。我只是新人,我不确定我是否遗漏了有关终端、vim 或 *nix 的某些内容。

提前致谢 。. .

更新:在我看来,我从来没有明确说明我在追求什么——我想在终端中停止服务器并返回到 vim 中打开的文件。正如 Tadman 在下面提到的,我知道我可能正在尝试打开一个额外的编辑器实例。我不清楚的是如何返回现有实例。现在尝试 Tadman 的建议。

4

1 回答 1

3

您正在创建一个要运行的子 shell node,将其挂起,^Z然后vim在执行下一步时打开一个新副本。现在你有两个编辑器在运行,所以你得到一个关于交换文件的错误。

为什么不在单独的 shell 中执行此操作,这是大多数人倾向于执行的操作,或者用于^C停止服务器并返回到您的编辑器?

于 2013-11-15T04:12:15.987 回答