[1]+ Stopped vim foo.py error, how to fix this?

帅比萌擦擦* 提交于 2021-02-09 20:26:07

问题


whenever I run a python program from vim command like this:

:!python foo.py

after running the program, vim will stop and say this:

[1]+  Stopped                 vim foo.py

I don't know why there is such an error. I don't use the foo.py file in other application, but it just happened.

In case you need, this is my .exerc file contents:

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

when I open the foo.py after running it, vim says this:

E325: ATTENTION
Found a swap file by the name ".foo.py.swp"
          owned by: me   dated: Mon Sep 30 21:05:52 2013
         file name: ~foo/bar/foo.py
          modified: no
         user name: me   host name: hostname
        process ID: 3635 (still running)
While opening file "foo.py"
             dated: Sat Sep 28 23:04:15 2013

(1) Another program may be editing the same file.
    If this is the case, be careful not to end up with two
    different instances of the same file when making changes.
    Quit, or continue with caution.

(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r foo.py"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file ".foo.py.swp"
    to avoid this message.

Swap file ".foo.py.swp" already exists!

Thank you. ( I am using mac os x )


回答1:


Saying:

set shellcmdflag=-ic

causes vim to open an interactive shell upon trying to execute a shell command.

In order to open an interactive shell, it suspends the vim process. That explains the behaviour (both [1]+ Stopped ... and Found a swap file ...) you're observing.

(You can say fg to resume the editor from the shell thus created.)

If you remove

set shellcmdflag=-ic

from your .exerc, you wouldn't observe this issue.




回答2:


In order to execute your python script, Vim must be suspended so that the script can be run in your shell.

What you see is not an error, it's your shell helpfully telling you that Vim is suspended (or "backgrounded" or "in the background" or… "stopped"). and that it's apparently the first and only program to be suspended.

To get back to Vim, just type fg (for foreground) at the prompt.

So, basically, what you get is both normal and expected.



来源:https://stackoverflow.com/questions/19094122/1-stopped-vim-foo-py-error-how-to-fix-this

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!