为什么我的代码 运行 处于空闲状态而不是 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
一致。
我尝试在空闲状态下使用 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
一致。