为什么我的代码 运行 处于空闲状态而不是 vim?

why does my code run in idle but not in vim?

我尝试在空闲状态下使用 F5 运行 编码并且 运行 很好

但我去 vim 编写相同的代码并执行 :!python 并且它给出了这个错误

我知道缩进是什么,但不应该给它。我该如何解决?

while True:
for i in range (90):
    print (str (i) + "is a number smaller than 90")
break

现在我 运行 它 vim 它给出了这个

 File "<stdin>", line 2

           ^
IndentationError: expected an indented block
for i in range (90):
    print (str (i) + "is a number smaller than 90")
break

在 Vim 中执行 :!python % 本质上等同于在 shell 中执行 $ python filename:向解释器提供文件并执行其内容。考虑到文件的缩进不佳,您得到的不仅是完全正常的和预期的,而且是一致的:

# in Vim
:!python %
  File "<stdin>", line 2
    for i in range (90):
      ^
IndentationError: expected an indented block

# in your shell
$ python filename
  File "<stdin>", line 2
    for i in range (90):
      ^
IndentationError: expected an indented block

如果有的话,就是 idle 报告的行为令人惊讶,这里:您的代码不正确,python 解释器无法按原样解析,如果 <F5> 确实如此忽略这些错误并执行您的代码,那么这意味着它正在做其他事情,而不仅仅是将您的文件传递给解释器。

FWIW,这是我在按 <F5> 后闲置文件得到的结果:

:!python %$ python filename一致。