Код VS Python autopep8 не учитывает 2 пробела, висящих отступы
Я пытаюсь заставить autopep8 работать с правильным отступом кода Python с 2 пробелами вместо 4. Я использую VS Code с расширением Python, который использует autopep8 для форматирования. Я обнаружил, что autopep8 может быть настроен на использование 2 пробелов
"python.formatting.autopep8Args": ["--indent-size=2"]
Но это не работает для меня.
Моя ситуация такая. Когда я нажимаю ввод, он корректно начинает следующую строку с тем же отступом, что и предыдущая строка. Нажмите ввод после открывающей круглой скобки, она правильно начинает новую строку с еще 2 пробелами. Но когда я вставляю или сохраняю (у меня для "editor.formatOnPaste" и "editor.formatOnSave" установлено значение true), происходит раздражающая вещь: все отступы в двух пробелах внутри скобок становятся равными 4 (другие отступы в двух пробелах не затрагиваются), Почему это происходит, и как я могу сделать это 2 пробела везде?
==== ====EDIT
Я обнаружил, что ошибка Pylint Wrong hanging indentation (remove 2 spaces). [bad-continuation]
, Это потому, что мой pylintrc indent-after-paren=2
, Мне интересно, может ли autopep8 или другой форматировщик Python установить это свойство?
4 ответа
Мне также пришлось включить это в свой массив в settings.json, аналогичный вашему.
"--ignore E121"
Согласно https://pypi.org/project/autopep8/, этот параметр гарантирует, что ваши отступы кратны 4. Если этого не сделать, используется настроенный размер вкладки в VSCode.
E121 - Fix indentation to be a multiple of four.
При этом ваш отступ по-прежнему "приемлем" согласно pep8, поэтому он фактически не изменит его на 4 пробела, которые вы ожидаете в своих парах. Мне пришлось превзойти свой на один уровень, а затем, когда он снова заработал, это не изменило его.
К сожалению, на самом деле это всего лишь обходной путь, который негативно влияет на другие правила отступов...
Вы можете видеть в коде для pep8, что они жестко запрограммировали размер вкладки по умолчанию, чтобы он был "способом Python" (4 пробела) в:
https://github.com/hhatto/autopep8/blob/120537a051d7f3cbbb5c4ede19b9e515156bd3d1/autopep8.py
Это выглядит так, будто висячий отступ просто не соответствует параметру --indent-size...
С использованием"autopep8.args"
вместо"python.formatting.autopep8Args"
работал у меня.
"autopep8.args": [
"--indent-size=2"
]
была такая же проблема, вот решение:
- Перейдите в каталог библиотеки вашей среды
- Откройте autopep8.py
- Найдите «DEFAULT_INDENT_SIZE» и измените его на 2.