Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在eclipse中缩进python文件(使用pydev)_Python_Eclipse_Pydev_Code Formatting_Indentation - Fatal编程技术网

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

在eclipse中缩进python文件(使用pydev),python,eclipse,pydev,code-formatting,indentation,Python,Eclipse,Pydev,Code Formatting,Indentation,我是eclipse的新手。我想缩进所有代码行,并通过按快捷方式或类似的方式格式化打开的文件。。。 我知道CTRL+SHIFT+F(因为它实际上在pydev中不起作用!!) 我找了好几个小时都没找到。在eclipse中有什么方法可以做到这一点吗。有点像visual studio中的CTRL+K,D,它会自动格式化和缩进所有源代码行?I。。。我认为这个问题没有道理。缩进是Python中的语法。让IDE自动缩进代码是没有意义的。如果它没有正确缩进,它就不能工作,IDE也无法知道缩进块的开始和结束位置。

我是eclipse的新手。我想缩进所有代码行,并通过按快捷方式或类似的方式格式化打开的文件。。。 我知道CTRL+SHIFT+F(因为它实际上在pydev中不起作用!!)
我找了好几个小时都没找到。在eclipse中有什么方法可以做到这一点吗。有点像visual studio中的CTRL+K,D,它会自动格式化和缩进所有源代码行?

I。。。我认为这个问题没有道理。缩进是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
# 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)
IDE不可能知道哪一个版本是正确的,或者您的意图是什么。如果要编写Python代码,就必须学会管理缩进。这是无法避免的,而期望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
# 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 print语句每次迭代的累积连接结果。两者在语法上都是100%正确的。他们没有问题。它们中的任何一个都可能是开发人员想要的。IDE不能“知道”哪个是正确的。它很容易错误地将第一个版本更改为第二个版本。因为该语言使用缩进作为语法,所以无法配置IDE来为您执行这种格式设置。

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

尽管自动缩进不是PyDev的一项功能,因为语言设计的原因,您应该能够使用简单的选项卡缩进。只需选择要缩进的行,然后按Tab键。如果要取消插入行,必须按Shift+Tab键。
仅此而已。

如果要将缩进从2个空格更改为4个空格(例如),请使用带有2个空格的“源->将空格转换为制表符”,然后使用带有4个空格的“Soruce->将制表符转换为空格”;考虑

之间的差异
for i in range(5):
    print i
print "done"

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


目前PyDev不支持这种特性;Pydev的作者Fabioz在某一点上说。

显然这只适用于Pydev,但我发现,通过将其键绑定从“Pydev视图”更改为“Pydev编辑器范围”,您可以获得非常有用的函数“Shift Right”和“Shift Left”(默认情况下映射为CTRL+ALT+。和CTRL+ALT+)。这将有效地缩进/缩进您所选择的所有行,使之尽可能多

这更容易:

  • 选择多行
  • 按Tab键缩进(向右移动),按Shift+Tab键取消缩进(向左移动)全部选中 台词

  • 您还可以选择行,右键单击,然后向右/向左移动

    在PyDev中,源格式似乎仍然不可用

    对于一次性的例子,我发现这个web应用做得很好


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

    这是正确的。Python依赖缩进来表示意义,不像C++或java。这意味着Python不能“自动缩进”,而其他人可以。实际上,如果让一个函数调用几行长,缩进可能会更松散。每个ide都应该提供缩进或单缩进快捷方式,eclipse也有@fivef belowWell所说的,不可能真正实现自动缩进,但是选择一个代码块并将每行的缩进增加1个缩进或减少1个缩进应该是正确的。我不知道“Shift+Tab”。这肯定会有帮助:)第一次用户的意见。如果解释器报告/知道“意外缩进”,这意味着它应该能够正确缩进文本,不是吗?我对解释器开发人员要求太高了吗?