如何在Python中缩进后自动返回光标?

如何在Python中缩进后自动返回光标?,python,vim,syntax,editor,indentation,Python,Vim,Syntax,Editor,Indentation,任何代码编辑器都知道在python中缩进的位置,因为python使用:作为缩进标志,但在完成代码块后,我们希望光标返回到上次的位置,如下所示: 不,IDE不可能在所有情况下都知道块何时结束 以下是一些例外情况,可以合理地猜测您希望结束当前缩进级别。例如,使用pass将Python语法要求使用块的块保留为空,或者使用return、break或continue,这些语句使Python无法到达缩进块的其余部分 然而,由于在Python中必须取消缩进才能发出块结束的信号,所以IDE不能在所有情况下都知

任何代码编辑器都知道在python中缩进的位置,因为python使用
作为缩进标志,但在完成代码块后,我们希望光标返回到上次的位置,如下所示:


不,IDE不可能在所有情况下都知道块何时结束

以下是一些例外情况,可以合理地猜测您希望结束当前缩进级别。例如,使用
pass
将Python语法要求使用块的块保留为空,或者使用
return
break
continue
,这些语句使Python无法到达缩进块的其余部分

然而,由于在Python中必须取消缩进才能发出块结束的信号,所以IDE不能在所有情况下都知道块何时结束。您可以轻松地使用几行空行执行
print()
调用,然后在相同缩进级别执行另一行代码,它仍然是
test\u func()
正文的一部分


如果编辑器实现了自动缩进规则,这完全取决于编辑器,但是任何实现了自动缩进规则的编辑器都会受到Python固有的限制。

不,IDE不可能在所有情况下都知道块何时结束

以下是一些例外情况,可以合理地猜测您希望结束当前缩进级别。例如,使用
pass
将Python语法要求使用块的块保留为空,或者使用
return
break
continue
,这些语句使Python无法到达缩进块的其余部分

然而,由于在Python中必须取消缩进才能发出块结束的信号,所以IDE不能在所有情况下都知道块何时结束。您可以轻松地使用几行空行执行
print()
调用,然后在相同缩进级别执行另一行代码,它仍然是
test\u func()
正文的一部分


如果编辑器实现了自动缩进规则,这完全取决于编辑器,但是任何实现了自动缩进规则的编辑器都会受到Python固有的限制。

您不能这样做,因为除了dedent本身之外,块的末尾没有标记。你可以在缩进块中有空行,所以只有空行并不意味着它是块的结尾。尝试
控制
+
输入
…我注意到在vim中使用带有ycm插件的
pass
可以帮我做缩进,我可以像Ruby中的
end
或C中的
}
那样使用
pass
吗?这个问题不是IDE/编辑器特有的吗?在PyCharm 2016.2中,在任何函数的末尾写入
pass
,然后按
enter
将光标移动到下一行的开头。
control
+
enter
在Atom中不起作用,您使用的编辑器是什么?您不能,因为除了dedent本身之外,块的末尾没有标记。你可以在缩进块中有空行,所以只有空行并不意味着它是块的结尾。尝试
控制
+
输入
…我注意到在vim中使用带有ycm插件的
pass
可以帮我做缩进,我可以像Ruby中的
end
或C中的
}
那样使用
pass
吗?这个问题不是IDE/编辑器特有的吗?在PyCharm 2016.2中,在任何函数末尾写入
pass
,然后按
enter
将光标移动到下一行的开头。
control
+
enter
在Atom中不起作用,您使用的编辑器是什么?
def test_func():
    print("Here we have an auto indent")
    # but how to

# return, without pressing the backspace key