每当我从 vim 命令运行 python 程序时,如下所示:
:!python foo.py
Run Code Online (Sandbox Code Playgroud)
运行程序后,vim 会停下来并说:
[1]+ Stopped vim foo.py
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会出现这样的错误。我没有在其他应用程序中使用 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
Run Code Online (Sandbox Code Playgroud)
当我运行 foo.py 后打开它时,vim 会说:
E325:注意 找到一个名为“.foo.py.swp”的交换文件 所有者:我 日期:2013 年 9 月 30 日星期一 21:05:52 文件名:~foo/bar/foo.py 修改:无 用户名:me 主机名:主机名 进程ID:3635(仍在运行) 打开文件“foo.py”时 日期: 2013 年 9 月 28 日星期六 23:04:15 (1) 另一个程序可能正在编辑同一个文件。 如果是这种情况,请小心不要最终出现两个问题 进行更改时同一文件的不同实例。 退出,或谨慎继续。 (2) 该文件的编辑会话崩溃。 如果是这种情况,请使用“:recover”或“vim -r foo.py” 恢复更改(请参阅“:帮助恢复”)。 如果您已经这样做了,请删除交换文件“.foo.py.swp” 以避免出现此消息。 交换文件“.foo.py.swp”已经存在!
谢谢。(我使用的是 mac os x )
说:
set shellcmdflag=-ic
Run Code Online (Sandbox Code Playgroud)
导致vim
在尝试执行 shell 命令时打开交互式 shell。
为了打开交互式shell,它会挂起该vim
进程。这解释了您所观察到的行为(两者[1]+ Stopped ...
) 。Found a swap file ...
(您可以说fg
从由此创建的 shell 恢复编辑器。)
如果您删除
set shellcmdflag=-ic
Run Code Online (Sandbox Code Playgroud)
从你的来看.exerc
,你不会观察到这个问题。