【问题标题】:indent python file (with pydev) in eclipse在 Eclipse 中缩进 python 文件(使用 pydev)
【发布时间】:2011-12-01 00:59:30
【问题描述】:

我是 Eclipse 的新手。我想缩进我的代码的所有行并通过按下快捷方式或类似的东西来格式化打开的文件...... 我知道 CTRL+SHIFT+F (因为它实际上在 pydev 中不起作用!!) 我一直在寻找几个小时没有成功。有没有办法在eclipse中做到这一点。有点像 Visual Studio 中的 CTRL+K,D 自动格式化和缩进所有源代码行?

【问题讨论】:

    标签: python eclipse pydev code-formatting indentation


    【解决方案1】:

    我……不认为这个问题有意义。缩进是 Python 中的语法。让你的 IDE 自动缩进你的代码是没有意义的。如果它没有正确缩进,它就不起作用,并且 IDE 无法知道你的缩进块在哪里开始和结束。举个例子:

    # Valid Code
    for i in range(10):
      b = i
    
    for j in range(b):
      c = j
    
    # Also Valid Code.
    for i in range(10):
      b = i
    
      for j in range(b):
        c = j
    

    IDE 不可能知道其中哪个版本是正确的,或者您的意图是什么。如果你要编写 Python 代码,你将不得不学习管理缩进。没有办法避免它,并且期望 IDE 神奇地清理它并仍然从中获得所需的结果几乎是不可能的。

    进一步的例子:

    # Valid Code.
    outputData = []
    
    for i in range(100):
      outputData.append(str(i))
    
    print ''.join(outputData)
    
    # Again, also valid code, wildly different behavior.
    outputData = []
    
    for i in range(100):
      outputData.append(str(i))
    
      print ''.join(outputData)
    

    第一个将产生一个字符串列表,然后将连接的结果打印到控制台 1 次。第二个仍然会生成一个字符串列表,但会打印循环每次迭代的累积连接结果 - 100 个打印语句。两者在语法上都是 100% 正确的。他们没有问题。它们中的任何一个都可能是开发人员想要的。 IDE 无法“知道”哪个是正确的。它很容易错误地将第一个版本更改为第二个版本。由于该语言使用缩进作为语法,因此无法配置 IDE 来为您执行这种格式化。

    【讨论】:

    • 这是正确的。与 C++ 或 Java 不同,Python 依赖缩进来表示含义。这意味着 Python 不能“自动缩进”,而其他的可以。
    • 其实,如果让一个函数调用多行,缩进可以更松。
    • 每个 ide 都应该提供缩进或非标识快捷方式,eclipse 也有如下@fivef 所说的
    • 不是真正的自动缩进是可能的,但是应该选择一个代码块并将每行的缩进增加 1 个缩进或减少 1 个缩进。
    【解决方案2】:

    我认为您正在寻找的是 Eclipse/PyDev 中的某种快捷方式,以便可以一次识别所有选定的代码。就像您在代码块上方创建新的“if”或“for”循环然后需要重新排列标识一样。 IDLE Editor 的“Ctrl + ]”快捷方式正是以这种方式工作的。据我所知,Eclipse 中的 PyDev 似乎没有这样的东西。

    【讨论】:

      【解决方案3】:

      虽然自动缩进不是 PyDev 的一项功能,因为语言设计您应该能够使用简单的制表符进行缩进。只需选择要缩进的行并按 Tab。如果要取消缩进,则必须按 Shift+Tab。 就是这样。

      【讨论】:

      • 我不知道“Shift+Tab”。这肯定会有所帮助:)
      【解决方案4】:

      如果您想从 2 个空格更改为 4 个空格缩进(例如),请使用带有 2 个空格的“Source->Convert space to tab”,然后使用带有 4 个空格的“Soruce->Convert tab to space”。

      【讨论】:

        【解决方案5】:

        缩进在语法上很重要;考虑两者的区别

        for i in range(5):
            print i
        print "done"
        

        for i in range(5):
            print i
            print "done"
        

        但是,IDE 能够规范化现有缩进当然是有意义的(例如,在每个级别应用一致数量的空格/制表符)。

        目前 PyDev 不支持这样的功能; Pydev 作者 Fabioz 在某一时刻 expressed interest in adding it in the future and indicated that for now you can use the supplied reindent.py script to do it.

        【讨论】:

          【解决方案6】:

          显然这仅适用于 Pydev,但我发现您可以获得非常有用的功能“右移”和“左移”(默认映射到 CTRL + ALT + 和 CTRL + ALT + ,)通过将它们的键绑定从“Pydev View”更改为“Pydev Editor Scope”来变得有用。这有效地缩进/缩进您选择的所有行

          【讨论】:

            【解决方案7】:

            这要容易得多:

            1. 选择多行
            2. 按 Tab 缩进(向右移动),Shift + Tab 取消缩进(向左移动)所有选中 行。

            【讨论】:

              【解决方案8】:

              也可以选择线条,右击,然后右移/左移

              【讨论】:

                【解决方案9】:

                PyDev 中似乎还没有源格式。

                偶尔我发现这个网络应用做得很好。

                http://pythoniter.appspot.com/

                【讨论】:

                  【解决方案10】:

                  就像前面所说的那样,python 需要缩进你的代码,所以对于其他事情,比如:作为参数传递给方法的变量之间的空格等,可以使用ctrl+shift+f 来格式化代码。这是用于 java 的,我尝试了 pydev 并进行了一些格式化。

                  【讨论】:

                  • 第一次用户的意见。如果解释器报告/知道“意外缩进”,这意味着它应该能够正确缩进文本,不是吗?我对解释器开发人员要求太多了吗?
                  猜你喜欢
                  • 1970-01-01
                  • 2010-12-27
                  • 2011-10-18
                  • 2018-12-25
                  • 2011-10-07
                  • 2012-02-19
                  • 2013-04-11
                  • 2011-02-16
                  • 2017-05-06
                  相关资源
                  最近更新 更多