Код 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.

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

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


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рабочей области или пользовательских настроек.


5
Мне пришлось перезапустить VSCode, чтобы изменения вступили в силу в среде IDE.
— JOpuckman 02

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

23

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

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

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


Это правда, в моем случае мне также нужно было установить размер вкладки в настройках расширения 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,

он работает, если вы работаете с файлами только с двумя пробелами табуляции!
— 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. Он внезапно будет делать очень странные отступы внутри объекта, хотя я некоторое время работал с этим файлом, и отступы были очень хорошими.


0

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

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



0

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

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

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


-1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.