отступить файл python (с pydev) в eclipse

Я новичок в затмении. Я хочу сделать отступ для всех строк моего кода и отформатировать открытый файл, нажав ярлык или что-то в этом роде ... Я знаю CTRL + SHIFT + F (поскольку он на самом деле не работает в pydev !!). искал часами безуспешно. Есть ли способ сделать это в затмении. что-то вроде CTRL + K, D в Visual Studio, который форматирует все строки исходного кода и делает отступы автоматически?


person Saied_Delshad    schedule 04.10.2011    source источник


Ответы (10)


Я ... не думаю, что этот вопрос имеет смысл. Отступы - это синтаксис 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 для выполнения такого рода форматирования за вас.

person g.d.d.c    schedule 04.10.2011
comment
Это верно. Python полагается на отступы для смысла, в отличие от C ++ или Java. Это означает, что Python не может иметь автоматический отступ, в то время как другие могут. - person TorelTwiddler; 05.10.2011
comment
На самом деле, если сделать вызов функции длиной в несколько строк, отступ может быть более свободным. - person erickrf; 13.09.2014
comment
каждый ide должен предоставлять ярлыки отступов или unidentation, а eclipse также имеет, как сказано в @fivef ниже - person Shubham Sharma; 09.01.2018
comment
Ну, не совсем автоматический отступ возможен, но следует выбрать блок кода и увеличить отступ каждой строки на 1 отступ или уменьшить на 1 отступ. - person demongolem; 21.09.2018

Если вы хотите изменить отступ с 2 пробелов на 4 пробела (например), используйте «Source-> Convert space to tab» с 2 пробелами, затем «Soruce-> Convert tab to space» с 4 пробелами.

person Demyn    schedule 01.06.2012

Хотя автоматический отступ не является функцией PyDev из-за языковой конструкции, вы должны иметь возможность делать отступ с помощью простой табуляции. Просто выберите строки, для которых нужно сделать отступ, и нажмите Tab. Если вы хотите убрать выделение строк, нажмите Shift + Tab. Это все.

person wagnerpeer    schedule 24.05.2012
comment
Про Shift + Tab не знал. Поможет обязательно :) - person Ad Infinitum; 27.10.2017

Это намного проще:

  1. Выбрать несколько строк
  2. Нажмите Tab, чтобы сделать отступ (сдвинуть вправо), Shift + Tab, чтобы убрать отступ (сдвинуть влево) все выделенные строки.
person fivef    schedule 19.08.2014

Отступы имеют синтаксическое значение; рассмотрите разницу между

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

и

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

Тем не менее, для IDE, безусловно, имеет смысл иметь возможность нормализовать существующий отступ (например, применять постоянное количество пробелов / вкладок на каждом уровне).

В настоящее время PyDev не поддерживает такую ​​функцию; Автор Pydev Фабиоз однажды выразил заинтересованность в добавлении его в future и указали, что на данный момент вы можете использовать для этого прилагаемый скрипт reindent.py.

person rakslice    schedule 02.08.2012

Очевидно, это только для Pydev, но я понял, что вы можете получить полезные очень полезные функции «Сдвиг вправо» и «Сдвиг влево» (по умолчанию сопоставленные с CTRL + ALT +. И CTRL + ALT +,). изменив их сочетания клавиш на «Область действия редактора Pydev» с «Представление Pydev». Это эффективно смещает / удаляет все строки, которые вы выбрали, сколько угодно.

person jjisnow    schedule 22.10.2012

Я думаю, что вы ищете какой-то ярлык в Eclipse / PyDev, чтобы можно было сразу идентифицировать выбранный код. Точно так же, как когда вы создаете новый цикл «if» или «for» над блоком кода, а затем вам нужно изменить идентификацию. В редакторе IDLE есть ярлык «Ctrl +]», который работает именно так. Насколько мне известно, в PyDev в Eclipse ничего подобного нет.

person jonathan.hepp    schedule 21.05.2012

Также можно выбрать линии, щелкнуть правой кнопкой мыши, затем сдвинуть вправо / сдвинуть влево

person reggie    schedule 11.03.2015

Похоже, форматирование исходного кода все еще недоступно в PyDev.

В разовых случаях я обнаружил, что это веб-приложение отлично справляется со своей задачей.

http://pythoniter.appspot.com/

person someuser    schedule 29.04.2015

Как уже говорилось ранее, python требует отступа в вашем коде, поэтому для других вещей, таких как: пробел между переменными, передаваемыми в качестве аргументов методам и т. Д., Можно использовать ctrl+shift+f для форматирования кода. Это то, что используется для java, я пробовал для pydev и немного форматирует.

person InvisibleWolf    schedule 16.06.2017
comment
Мнение первого пользователя. Если интерпретатор сообщает / знает о неожиданном отступе, который подразумевает, что он должен иметь возможность правильно отступать от текста, не так ли? Я многого прошу от разработчика интерпретатора? - person Jan Hus; 29.07.2020