4

我有一个不可见的expected an indented block错误,这可能是由于我使用制表符而不是空格引起的。

当我打开“查找/替换”窗口并尝试TABfindIDLE 字段中输入时,不出所料地只是跳到该replace字段。

我该怎么做呢?


最终更新:

谢谢大家的解答,不胜感激。我的问题是python希望函数注释也缩进,即

def imdheladumb():
"""
I'm dum as hel
"""

不起作用,它需要

def imdheladumb():
    """
    I'm dum as hel
    """
4

4 回答 4

4

IDLE 不允许您搜索文字制表符。您可以将一个粘贴到搜索框中(按照 will 的建议),但它永远不会匹配任何内容。

但是,它确实允许您进行正则表达式搜索,并且正则表达式\t将匹配文字选项卡。因此,打开Regular expression复选框,并\tFind:框中输入 ',并在框中输入 4 或 8 个空格(视情况而定)Replace:

但是,正如将建议的那样,最好使用 IDLE 的功能而不是尝试手动执行操作:选择带有标签(或不一致)缩进的代码块,转到Format菜单,然后选择Untabify Region. (或者直接按 control-6。)如果使用 4 空格制表符的编辑器插入制表符,您可能需要先使用New Indent Width并将其更改为 4,然后Untabify Region.

当您编写不一致的代码时,IDLE 没有任何代码来猜测您的标签大小。我知道的唯一编辑器是emacs。如果你只是在 emacs 中打开文件,它会尝试猜测你的设置,然后你可以选择整个缓冲区和untabify-region. 如果它猜对了,你就是金子;如果它猜错了,不要保存缓冲区,因为现在它会更难修复。(如果您是世界上知道如何阅读 emacs lisp 但不喜欢 emacs 的 3 个人之一,您可以查看python-mode.el源代码,看看它是如何发挥作用的。)

于 2012-12-03T21:24:33.453 回答
2

一种通用的方法是从文档中复制一个制表符(或者在任何随机文本编辑器中复制一个制表符并复制它),然后将其放入字段中。

您可以尝试将其放入\t其中,但这仅适用于某些编辑器。

大多数 IDE 都具有自动将制表符替换为预定义数量的空格的功能。建议开启...

编辑:如果您出于任何原因在其他地方使用标签,则执行标准查找和替换可能会很危险。

如果你看这里,有一个名为“tabify region”的选项。这对你来说可能更有趣。

于 2012-12-03T21:14:30.050 回答
1

应该有一个应用程序。;)

如果您喜欢矫枉过正,那么通过正则表达式运行代码怎么样:

re.sub('\t', '\s\s\s\s', yourCode)
于 2012-12-03T21:22:52.310 回答
0

对于那些遇到问题的人,新版本的 VSCode 可以轻松解决。

  1. 单击页面底部的标签大小。
  2. 从弹出的“选择操作”菜单中选择将缩进转换为空格。
于 2022-01-10T22:35:49.103 回答