在eclipse中缩进python文件(使用pydev)

时间:2011-10-04 21:29:09

标签: python eclipse pydev code-formatting indentation

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

9 个答案:

答案 0 :(得分:21)

如果要将2个空格更改为4个空格缩进(例如),请使用“Source->将空间转换为制表符”,使用2个空格,然后使用4个空格将“Soruce->转换选项卡转换为空格”。

答案 1 :(得分:20)

我......不要认为这个问题有道理。缩进是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来为您执行此类格式化。

答案 2 :(得分:16)

虽然自动缩进不是PyDev的一个功能,因为语言设计你应该能够用一个简单的标签缩进。只需选择要缩进的行,然后按Tab键。如果你想要取消行,你必须按Shift + Tab。 多数民众赞成。

答案 3 :(得分:13)

这更容易:

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

答案 4 :(得分:4)

缩进在语法上很重要;考虑

之间的区别
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

答案 5 :(得分:2)

显然这只适用于Pydev,但我已经知道你可以得到非常有用的功能“Shift Right”和“Shift Left”(默认映射到CTRL + ALT +。和CTRL + ALT +)通过从“Pydev View”将其键绑定更改为“Pydev Editor Scope”来变得有用。这有效地缩进/拒绝您选择的所有行

答案 6 :(得分:1)

我认为您正在寻找的是Eclipse / PyDev中的某种快捷方式,以便可以同时识别所选代码。就像你创建一个新的" if"或者" for"循环上面的代码块然后需要重新排列标识。 IDLE编辑器有" Ctrl +]"完全符合这种方式的快捷方式。据我所知,似乎Eclipse中的PyDev没有这样的东西。

答案 7 :(得分:1)

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

答案 8 :(得分:0)

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