簡體   English   中英

VS Code Python autopep8 不支持 2 個空格懸掛縮進

[英]VS Code Python autopep8 does not honor 2 spaces hanging indentation

我正在嘗試讓 autopep8 正確縮進 Python 代碼,其中包含 2 個空格而不是 4 個空格。我正在使用帶有 Python 擴展的 VS Code,它使用 autopep8 進行格式化。 我在這里發現 autopep8 可以配置為使用 2 個空格

"python.formatting.autopep8Args": ["--indent-size=2"]

但這對我不起作用。

我的情況是這樣的。 當我按下回車鍵時,它會正確地開始下一行,其縮進與前一行相同。 在左括號后按回車鍵,它會正確地以另外 2 個空格開始新行。 但是當我粘貼或保存時(我將“editor.formatOnPaste”和“editor.formatOnSave”設置為true),令人討厭的事情發生了:括號內的所有2空格縮進都變成了4(其他2空格縮進不受影響) . 為什么要這樣做,我怎樣才能讓它到處都是 2 個空格?

在此處輸入圖像描述

====編輯====

我發現 pylint 錯誤Wrong hanging indentation (remove 2 spaces). [bad-continuation] Wrong hanging indentation (remove 2 spaces). [bad-continuation] 這是因為我的 pylintrc 有indent-after-paren=2 我想知道 autopep8 或其他 Python 格式化程序是否可以設置此屬性?

我還必須將它包含在我的 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#L104

這使它看起來像懸掛縮進只是不尊重 --indent-size 選項......

有同樣的問題,這里是解決方案:

  1. 導航到您環境的庫目錄
  2. 打開 autopep8.py
  3. 搜索“DEFAULT_INDENT_SIZE”並將其更改為 2

添加--indent-size=2 --ignore=E121對我有用。 autopep8 縮進大小 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM