3

每当我从 vim 命令运行 python 程序时,如下所示:

:!python foo.py

运行程序后,vim 会停下来说:

[1]+  Stopped                 vim foo.py

我不知道为什么会出现这样的错误。我不在其他应用程序中使用 foo.py 文件,但它只是发生了。

如果您需要,这是我的 .exerc 文件内容:

set nu
syntax on
filetype on
filetype indent on
filetype plugin on
set tabstop=4
set shiftwidth=4
set softtabstop=4
set shellcmdflag=-ic

当我在运行 foo.py 后打开它时,vim 会这样说:

E325:注意
找到一个名为“.foo.py.swp”的交换文件
          拥有者:我 日期:2013 年 9 月 30 日星期一 21:05:52
         文件名:~foo/bar/foo.py
          修改:没有
         用户名:我主机名:主机名
        进程 ID:3635(仍在运行)
打开文件“foo.py”时
             日期:2013 年 9 月 28 日星期六 23:04:15

(1) 另一个程序可能正在编辑同一文件。
    如果是这种情况,请注意不要以两个结尾
    进行更改时同一文件的不同实例。
    退出,或谨慎继续。

(2) 此文件的编辑会话崩溃。
    如果是这种情况,请使用 ":recover" 或 "vim -r foo.py"
    恢复更改(参见 ":help recovery")。
    如果您已经这样做了,请删除交换文件“.foo.py.swp”
    以避免此消息。

交换文件“.foo.py.swp”已经存在!

谢谢你。(我正在使用 mac os x)

4

2 回答 2

4

说:

set shellcmdflag=-ic

导致vim在尝试执行 shell 命令时打开交互式 shell。

为了打开一个交互式shell,它暂停vim进程。这解释了您正在观察的行为([1]+ Stopped ...和)。Found a swap file ...

(你可以说fg从这样创建的 shell 中恢复编辑器。)

如果你删除

set shellcmdflag=-ic

从你的.exerc,你不会观察到这个问题。

于 2013-09-30T12:26:57.437 回答
1

为了执行你的 python 脚本,必须暂停 Vim 以便脚本可以在你的 shell 中运行。

你看到的不是错误,而是你的 shell 有用地告诉你 Vim 被挂起(或“后台”或“在后台”或......“停止”)。它显然是第一个也是唯一一个被暂停的程序。

要返回 Vim,只需在提示符处键入fg(for )。foreground

所以,基本上,你得到的都是正常的和预期的。

于 2013-09-30T12:30:24.323 回答