使用shell的Vim,如何在Unix中停止像Cz这样的工作?

Cul*_*lip 1 unix vim shell

我有一个关于使用Vim编程的快速问题.我有时在程序中犯了一个愚蠢的错误.

例如,下面的Python代码有一个无限循环(比如foo.py......执行时要小心!)

x = 1
while x == 1:
    x = 1
Run Code Online (Sandbox Code Playgroud)

你不会看到任何结果,但在计算机内找到一个风扇变得越来越响亮,你需要停止执行这个Python程序.在Unix shell上,您可以按下来执行此操作Ctrl-z.或者,在Emacs shell模式下,只需按下即可Ctrl-c Ctrl-z.

我知道如何在Vim中切换到shell模式:( :sh然后键入python foo.py)或:!python foo.py.但是我不知道如何在不杀死Vim本身的情况下停止Vim的shell工作.有谁知道这个?

ZyX*_*ZyX 5

你为什么不能用<C-C>?默认情况下,除非程序能够捕获,否则它会发送一个INTerrupt信号<C-C>.Vim <C-C>像任何其他<C-...>键一样处理,但python默认不执行此操作.

顺便说一句,<C-Z>在unix shell中暂停程序,而在上面提到的情况下,你需要杀死它,这是使用完成的<C-C>.Suspend =暂停执行(尽管大多数程序无法/不需要正确处理SIGTSTP/SIGCONT).