VSCode: разный размер вкладки между сохранением и форматом

#visual-studio-code #tabs #formatting

Вопрос:

Я установил для своих вкладок пробелы и установил ширину вкладки на 2 из них. Когда я явно прошу vscode переформатировать мой код (javascript), он делает именно то, что я ожидаю. Когда я создаю новую строку в своем коде, она также автоматически отступает до 2 пробелов.

Однако, когда я сохраняю (вручную или автоматически), код переформатируется с 4 пробелами!!!

С yaml этого не происходит.

Я считаю, что я использую красивее (потому что так написано в строке состояния) на небольшом расстоянии от того места, где написано Spaces: 2 . В моих настройках.json есть следующее: "editor.tabSize": 2 . У меня также есть эта прелестная маленькая штучка:

 "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
 

Что, я думаю, означает, что он использует красивее. В нем есть тот же формат, который зарегистрирован для yaml (и, фактически, почти для всего остального).

Может ли кто-нибудь сказать мне, как остановить это раздражающее поведение, не теряя преимуществ автосохранения?

Ответ №1:

  1. Пожалуйста, посмотрите, .editorconfig существует ли в вашем проекте.
  • Если это так, отредактируйте файл (см. https://editorconfig.org/) или вы можете обсудить это с автором, если это общий проект. Например.:
 [*.js]
indent_style = space
indent_size = 2
 
  • Или вообще отключить .editorconfig поддержку:
 "prettier.useEditorConfig": false
 
  1. Без использования .editorconfig я не смог бы повторить вашу проблему (т. Е. Настроен размер вкладки = 2, переформатирован в 4).
    Однако обходной путь был бы:
 "editor.formatOnSave": false
 

или даже ограничиться javascript только:

 "[javascript]": { "editor.formatOnSave": false }
 

Это позволило бы сохранить функцию автоматического сохранения, но пропустить автоматическое форматирование.

  1. Подведите итоги по связанным вариантам:
 "editor.tabSize":
"editor.detectIndentation":
"editor.formatOnSave":
"prettier.tabWidth":
"prettier.useEditorConfig":
"prettier.useTabs":
 

Ответ №2:

Просто отключите обнаружение отступов, как это

"editor.detectIndentation": false.

также используйте

"editor.formatOnSave": true

и

"prettier.tabWidth": 2,

Комментарии:

1. Это не имело никакого значения, извини

2. @SoftwareEngineer Я обновил свой ответ, пожалуйста, проверьте его

3. Пробовал это, с полным перезапуском и без него, и все равно это не имеет никакого значения. Спасибо.

4. С "editor.detectIndentation": false помощью , это работает на меня.