Код Visual Studio: формат не использует настройки отступа

156

При использовании Format Codeкоманды в Visual Studio Code не соблюдаются мои настройки отступа ( "editor.tabSize": 2). Вместо этого используется размер табуляции 4. Есть идеи, почему это происходит?

Благодарность!

ЭндиПерлитч
источник
Какой язык? Visual Studio Code делегирует форматирование в средство форматирования языка. Некоторые программы форматирования соблюдают настройку отступа. Например, C #, который обрабатывается OmniSharp, и должен быть настроен с использованием omnisharp.json
Ян Ян,
Это заняло у меня много времени, чтобы понять: у меня был файл .cs со смешанными табуляциями и пробелами-отступами, и я хотел отформатировать его со всеми табуляциями (b / c в большинстве строк были табуляции). Я пробовал различные значения настроек с «Форматировать документ» и «Выбор формата», но безуспешно. Наконец, я нашел действие «Преобразовать отступ в табуляцию» (см. Изображение в ответе @ Maleki), и оно сделало то, что я хотел сделать. (Я также недавно обнаружил ctrl-shift-p! ... да, я новичок в VS Code)
KevinVictor

Ответы:

247

Количество пробелов для форматирования берется из другого места. Я использую версию 1.0, и вот что я сделал, чтобы исправить это (я предполагаю, что вы используете пробелы вместо вкладок):

Внизу редактора справа нажмите «Пробелы: #»:

строка состояния справа

Затем вверху появится меню. Выберите «Отступ с использованием пробелов»:

выберите тип отступа

Наконец, вы можете выбрать, на сколько пробелов вы хотите, чтобы ваши файлы были с отступом.

выберите размер вкладки

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

Малеки
источник
33
Этот параметр не используется при применении автоматического формата (щелкните правой кнопкой мыши -> Код формата). Он всегда использует 4 пробела.
kiml42
Вам необходимо и то, и другое - настройте свои личные параметры для рабочего пространства или редактора (или обоих). Новые файлы сохранят эту настройку и покажут, например, цифру «2» в строке состояния, как показано на этих снимках экрана. Тогда вы можете автоформатировать. Для существующих файлов сначала установите настройки рабочего пространства / редактора на «использовать вкладки» или «использовать пробелы» и установите количество пробелов, затем вы можете использовать описанный выше метод для автоформатирования существующих файлов.
rmcsharry 08
5
Задайте настройки пользователя и рабочего пространства, установите их в нижней панели, повторно открыв файл - все еще автоформат использует 4 пробела ...
Джаред
3
Пришлось выйти и перезапустить vscode после установки значений по умолчанию для пользователя и рабочего пространства, чтобы настройки были приняты. Только тогда он прекратил попытки использовать 4 пробела в моих файлах JS.
Джон Петтитт
11
@Jared Я думаю, вы используете JS-CSS-HTMLплагин. В этом случае нажмите, F1выберите форматтер и установите там отступ. Кажется, что он отменяет все параметры, описанные выше.
Атиф Мохаммед Аминуддин
119

Visual Studio Code определяет текущий отступ по умолчанию и использует его - игнорируя .editorconfig

Также установите для "editor.detectIndentation" значение false.

(Файлы -> Настройки -> Настройки)

снимок экрана

jnkb
источник
1
Если это произойдет, возможно, у вас есть несоответствующий отступ в файле. У меня был файл с вкладками повсюду, за исключением нескольких строк с двумя пробелами (кто знает почему), которые в конечном итоге были обнаружены как использующие вкладки, но с размером вкладки 2.
isanae
54

Если ответ @ Maleki не работает для вас, проверьте, есть ли у вас .editorconfigфайл в папке проекта.

Например, Angular CLI генерирует его с новым проектом, который выглядит так

# Editor configuration, see http://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
max_line_length = off
trim_trailing_whitespace = false

Изменение indent_sizeздесь требуется , как это кажется , что это приоритет , чем в вашей .vscodeрабочей области или пользовательских настроек.

seangwright
источник
5
Мне пришлось перезапустить VSCode, чтобы изменения вступили в силу в среде IDE.
JOpuckman 02
3
В моем случае это было вызвано .editorconfigфайлом в моей домашней папке. Каким-то образом это заставляет VSCode игнорировать любые настройки, специфичные для рабочей области. Очень надоедливый.
xji
23

Если вы используете плагин (в моем случае Vetur для vue.js), они могут устанавливать свои собственные настройки форматирования вкладок.

Откройте свои настройки, найдите «формат» и просмотрите соответствующие настройки плагина, которые могут перезаписывать глобальный формат вкладок. Это сработало для меня; как только я обновил настройки вкладки Vetur в соответствии с моими предпочтениями (в моем случае вкладки размером 4), форматирование документов .vue начало работать правильно:

введите описание изображения здесь

Ciabaros
источник
Это правда, в моем случае мне также нужно было установить размер вкладки в настройках расширения Prettier.
tonix 01
Стоит отметить, что SCSS Formatterплагин использует, например, свои собственные настройки, поэтому вы должны перейти Settings > Extensions > SCSS Formatter > Use Tabsпо ссылке, чтобы заставить его использовать, например, вкладки.
SmartyP
13

Для меня эта проблема была вызвана использованием prettierплагина VSCode без более красивого файла конфигурации в рабочей области.

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

внимание
источник
1
Для меня это был плагин «Украсить».
Мэтью Смит
У меня была такая же проблема с "Clang-Format" и конфигурационным файлом ".clang-format".
repkap11
7

настройки ниже решили мою проблему

  "editor.detectIndentation": false,
  "editor.insertSpaces": false,
  "editor.tabSize": 2,
rashidnk
источник
он работает, если вы работаете с файлами только с двумя пробелами табуляции!
Dominux
6

Скорее всего, у вас установлено какое-то расширение форматирования, например JS-CSS-HTML Formatter .

Если это так, просто откройте палитру команд, введите «Formatter» и выберите Formatter Config. Затем измените значение по "indent_size"своему усмотрению.

PS Не забудьте перезапустить Visual Studio Code после редактирования :)

Альберт Тимашев
источник
3

Если вы пришли сюда из Google, потому что вкладка не имеет отступа, это также может быть связано с тем, что "Вкладка перемещает фокус". Он находится внизу справа, и если у вас достаточно большой монитор, вы можете пропустить его, несмотря на то, что он выделен.

введите описание изображения здесь

Щелкните зеленую область или Ctrl + M, чтобы остановить ее. Я не уверен, что его можно полностью отключить, но опять же, я не знаю, почему редактор кода может захотеть возиться с чем-то вроде отступов.

Стинги Джек
источник
3

У меня была аналогичная проблема - что бы я ни делал, я не мог заставить размер вкладки придерживаться 2, даже если он находится в моих пользовательских настройках - это в конечном итоге произошло из-за расширения EditorConfig . Он ищет .editorconfigфайл в вашем текущем рабочем каталоге и, если он не находит его (или тот, который он находит, не указывает root=true), он будет продолжать поиск в родительских каталогах, пока не найдет его.

Оказалось, что у меня был a .editorconfigв родительском каталоге каталога, в который я поместил все свои новые проекты кода, и он указал tabSize равный 4. Удаление этого файла устранило мою проблему.

бантик
источник
Да, был и мой .editor-config, который был добавлен автоматически nrwl. Я установил все остальное на 4 и не мог понять. Ура !!
Crowmagnumb
1

У меня иногда бывает такая же проблема. VSCode просто внезапно потеряет рассудок и полностью проигнорирует любые настройки отступа, которые я ему скажу, даже если он весь день делал отступы в одном и том же файле.

Я editor.tabSizeустановил значение 2 (также как и editor.formatOnSaveзначение true). Когда VSCode портит файл, я использую параметры внизу редактора, чтобы изменить тип и размер отступа, надеясь, что что-то сработает, но VSCode настаивает на фактическом использовании размера отступа 4.

Исправление? Перезапустите VSCode. Он должен вернуться со статусом отступа, показывающим что-то не так (в моем случае 4). Что касается меня, мне пришлось изменить настройку, а затем сохранить ее, чтобы действительно внести изменение, но это, вероятно, из-за моих editor.formatOnSaveнастроек.

Я не понял, почему это происходит, но для меня это обычно, когда я редактирую вложенный объект в файле JS. Он внезапно будет делать очень странные отступы внутри объекта, хотя я некоторое время работал с этим файлом, и отступы были очень хорошими.

MrOBrian
источник
0

Плагин VSCode Vetur; используемый для приложений VueJS, для меня переопределил настройку.

Установка vetur.format.options.tabSize на мое предпочтительное количество пробелов заставила его работать.

Swoot
источник
0

Я думаю, что vscode .pyпо умолчанию использует autopep8 для форматирования .

"PEP 8 - Руководство по стилю кода Python | Python.org"

Согласно этому веб-сайту, следующее может объяснить, почему vscode всегда использует 4 пробела.

Используйте 4 пробела на каждый уровень отступа.

Чой
источник
0

Также убедитесь, что ваши настройки рабочего пространства не имеют приоритет над вашими пользовательскими настройками. Пользовательский интерфейс не делает очень очевидным, какие настройки вы редактируете, и "Файл> Настройки> Настройки" по умолчанию имеет настройки пользователя, хотя настройки рабочего пространства имеют приоритет над пользовательскими настройками.

введите описание изображения здесь

Вы также можете напрямую редактировать настройки рабочей области: /.vscode/settings.json

DoomGoober
источник
-1

Отключите все плагины (затем включите один за другим и проверьте)

фидер
источник