Как настроить коэффициент преобразования табуляции в пространство?

854

Как настроить коэффициент преобразования табуляции в пространство при использовании кода Visual Studio?

Например, прямо сейчас в HTML он производит два пробела за нажатие TAB, а в TypeScript - 4.

Дж. Абрахамсон
источник

Ответы:

1363

По умолчанию код Visual Studio будет пытаться угадать ваши параметры отступа в зависимости от файла, который вы открываете.

Вы можете отключить угадывание отступов через "editor.detectIndentation": false.

Вы можете легко настроить это с помощью этих трех настроек для Windows в меню ФайлНастройкиНастройки пользователя и для Mac в меню CodePreferencesSettings или ⌘,:

// The number of spaces a tab is equal to. This setting is overridden
// based on the file contents when `editor.detectIndentation` is true.
"editor.tabSize": 4,

// Insert spaces when pressing Tab. This setting is overriden
// based on the file contents when `editor.detectIndentation` is true.
"editor.insertSpaces": true,

// When opening a file, `editor.tabSize` and `editor.insertSpaces`
// will be detected based on the file contents. Set to false to keep
// the values you've explicitly set, above.
"editor.detectIndentation": false
Алекс Дима
источник
1
Эй, Гасс, не могли бы вы указать мне файл, где предположение неверно? Также, пожалуйста, поделитесь, как вы настроили эти два параметра (tabSize & insertSpaces) и что вы ожидаете получить. Спасибо! :)
Алекс Дима
5
Я настроил обе настройки на «авто», и поведение не такое, как я ожидал (хотя я бы не стал так далеко называть это «неправильно»). Я не знаю, какой файл нужно изменить, чтобы он поддерживал мою конвенцию, но я открыл для этого билет на счет пользователя , как это было предложено в ответе на вопрос # 30057721
Guss
4
Есть ли возможность установить значения по умолчанию для новых пустых файлов? В этом сценарии нечего догадываться, и я думаю, что VSCode по умолчанию будет использовать пробелы (что я не предпочитаю) ...
Stijn de Witt
Кстати, есть также опция настроек рабочего места, так что вы можете установить другое поведение в зависимости от проекта, которое переопределяет пользовательские настройки. 2 ¢
Ерш
1
Спасибо, Рябин. Есть ли способ изменить tabSizeязык? например, при редактировании нескольких файлов на разных языках в одной рабочей области (например, Ruby, JavaScript, CSS и т. д.) - Ruby будет 2пробелами, но CSS будет 4... обычно.
Джейкоб Барнард
693

Я использую версию 1.21, но я думаю, что это может относиться и к более ранним версиям.

Посмотрите на нижнюю правую часть экрана. Вы должны увидеть то, что говорит Spacesили Tab-Size.

Шахта показывает пространства, →

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

  1. Нажмите на пробелы (или размер табуляции )
  2. Выберите отступ с помощью пробелов или отступ с помощью вкладок
  3. Выберите количество пробелов или вкладок, которые вам нравятся.

Это работает только для одного документа, но не для всего проекта. Если вы хотите применить его для всего проекта, вам также необходимо добавить его "editor.detectIndentation": falseв настройки пользователя.

запутанный
источник
как делается № 3? После выбора # 2, кажется, нет способа просто "выбрать количество пробелов ... вам нравится". Спасибо.
Крис
Я все время думал: «Это как-то возможно ...» Это объясняет как.
ВЛЗ
189

Ну, если вам нравится способ разработчика, Visual Studio Code позволяет вам указать различные типы файлов для tabSize. Вот пример моего settings.jsonс четырьмя пробелами по умолчанию и двумя пробелами в JavaScript / JSON:

{
  // I want my default to be 4, but JavaScript/JSON to be 2
  "editor.tabSize": 4,
  "[javascript]": {
    "editor.tabSize": 2
  },
  "[json]": {
    "editor.tabSize": 2
  },

  // This one forces the tab to be **space**
  "editor.insertSpaces": true
}

PS: Ну, если вы не знаете, как открыть этот файл (особенно в новой версии кода Visual Studio), вы можете:

  1. Левая нижняя передача →
  2. Настройки → вверху справа Открыть настройки

 

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

Xin
источник
105

По умолчанию код Visual Studio автоматически определяет отступ текущего открытого файла. Если вы хотите отключить эту функцию и сделать все отступы, например, два пробела, вы должны сделать следующее в настройках пользователя или рабочей области.

{
    "editor.tabSize": 2,

    "editor.detectIndentation": false
}
Джим Дойл
источник
57

Мы можем контролировать размер вкладки по типу файла с помощью EditorConfig и его EditorConfig для расширения кода VS. Затем мы можем сделать Alt+ Shift+ , Fспецифичные для каждого типа файла.

Установка

ext install EditorConfig

Пример конфигурации

.editorconfig

[*]
indent_style = space

[*.{js,ts,json}]
indent_size = 2

[*.java]
indent_size = 4

[*.go]
indent_style = tab

settings.json

EditorConfig переопределяет любой файл settings.json для редактора. Нет необходимости менять editor.detectIndentation.

Шон Луттин
источник
О чем extвы говорите (ответьте, отредактировав свой ответ, а не здесь, в комментариях (при необходимости))? Какая-то вещь Node.js? Какая платформа?
Питер Мортенсен
12

Если вы используете более красивое расширение в коде Visual Studio, попробуйте добавить его в файл settings.json:

"editor.insertSpaces": false,
"editor.tabSize": 4,
"editor.detectIndentation": false,

"prettier.tabWidth": 4,
"prettier.useTabs": true  // This made it finally work for me
slowpoke123
источник
8

В Visual Studio Code версии 1.31.1 или новее (я думаю): как и в случае с Alex Dima , вы можете легко настроить это с помощью этих настроек для

  • Windows в меню ФайлНастройкиНастройки пользователя или используйте короткие клавиши Ctrl+Shift +P
  • Mac в меню КодНастройкиНастройки или ,

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

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

Андрей Пацейко
источник
7

Вы хотите убедиться, что ваш editorconfig не конфликтует с вашей конфигурацией настроек пользователя или рабочей области, так как у меня было некоторое раздражение, когда я думал, что настройки файлов настроек не применялись, когда это была моя конфигурация редактора, отменив эти изменения.

Трэвис Браун
источник
7

Это lonefy.vscode-js-css-html-formatterвиновато. Отключите его и установите HookyQR.beautify.

Теперь при сохранении ваши вкладки не будут преобразованы.

user3550138
источник
7

В правом нижнем углу у вас есть пробелы: пробелы: 2

Там вы можете изменить отступ в соответствии с вашими потребностями: Параметры отступа

Dacomis
источник
4

При использовании TypeScript ширина вкладки по умолчанию всегда равна двум, независимо от того, что написано на панели инструментов. Вы должны установить "prettier.tabWidth" в настройках пользователя, чтобы изменить его.

Ctrl+ P, Тип → Настройки пользователя, добавить:

"prettier.tabWidth": 4
Стив Ханов
источник
4

Если принятый ответ на этот пост не работает, попробуйте:

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

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

dhruvpatel
источник
4

Наши любимые участники сообщества уже получили много хороших ответов. Я на самом деле хотел добавить код CS tabSize и нашел эту тему. Я нашел много решений, и официальные документы по VS Code - это круто. Я просто хочу поделиться своими настройками C #:

"[csharp]": {
    "editor.insertSpaces": true,
    "editor.tabSize": 4
},

просто скопируйте и вставьте приведенный выше код в ваш settings.jsonфайл и сохраните. Спасибо

Джамал Уддин
источник
1
Да, это путь, если вы хотите установить другой формат для конкретного языка. Мне нравится использовать вкладки с tabWidth = 2, но autopep8 просто ненавидит это.
Абхишек Касиредди
2

Файл меню → НастройкиНастройки

Добавить в настройки пользователя:

"editor.tabSize": 2,
"editor.detectIndentation": false

затем щелкните правой кнопкой мыши по вашему документу, если он у вас уже открыт, и выберите Формат документа, чтобы ваш существующий документ следовал этим новым настройкам.

Гмоней Моцарт
источник
2

Решение @ alex-dima от 2015 года изменит размеры вкладок и пробелы для всех файлов, а решение @ Tricky от 2016 года, по-видимому, изменит только настройки для текущего файла.

По состоянию на 2017 год я нашел другое решение, которое работает для каждого языка. Visual Studio Code не использовал правильные размеры вкладок или настройки пространства для Elixir , поэтому я обнаружил, что могу изменить настройки для всех файлов Elixir.

Я щелкнул по языку в строке состояния (в моем случае «Elixir»), выбрал «Настроить языковые настройки на основе« Elixir »...» и отредактировал языковые настройки для Elixir. Я просто скопировал настройки "editor.tabSize" и "editor.insertSpaces" из настроек по умолчанию слева (я так рад, что они показаны), а затем изменил их справа.

Он работал отлично, и теперь все языковые файлы Elixir используют правильный размер вкладки и настройки пространства.

Кевин Питер
источник
1

Мне пришлось много редактировать настройки, как в предыдущих ответах, поэтому я не знаю, что заставило его работать после многих модификаций.

Ничего не работало , пока я не закрыл и openen мой IDE, но последние три вещи , которые я сделал Отключает lonefy.vscode-js-css-html-formatter, "html.format.enable": true,и перезапустить Visual Studio.

{
    "editor.suggestSelection": "first",
    "vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
    "workbench.colorTheme": "Default Light+",
    "[html]": {
        "editor.defaultFormatter": "vscode.html-language-features",
        "editor.tabSize": 2,
        "editor.detectIndentation": false,
        "editor.insertSpaces": true
    },
    "typescript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces": true,
    "editor.tabSize": 2,
    "typescript.format.insertSpaceAfterConstructor": true,
    "files.autoSave": "afterDelay",
    "html.format.indentHandlebars": true,
    "html.format.indentInnerHtml": true,
    "html.format.enable": true,
    "editor.detectIndentation": false,
    "editor.insertSpaces": true,
}
user742102
источник
0

Если это для Angular 2, и CLI генерирует файлы, которые вы хотели бы по-разному отформатировать, вы можете отредактировать эти файлы, чтобы изменить то, что генерируется:

npm_modules/@angular/cli/blueprints/component/files/__path__/*

Не рекомендуется массово, так как обновление npm удалит вашу работу, но сэкономило мне много времени.

Бен Талиадорос
источник
0

Я попытался изменить редактор .tabSizeна 4, но .editorConfigпереопределяет любые настройки, которые я указал, поэтому нет необходимости изменять какие-либо настройки в пользовательских настройках. Вам просто нужно отредактировать файл .editorConfig:

set indent_size = 4
Gh111
источник
-1

Пользователь3550138 правильный. lonefy.vscode-js-css-html-formatterпереопределяет все настройки, упомянутые в других ответах. Однако вам не нужно отключать или удалять его, так как он может быть настроен.

Полные инструкции можно найти, открыв боковую панель расширений и нажав на это расширение, и оно отобразит инструкции по настройке в рабочей области редактора. По крайней мере, это так для меня в Visual Studio Code версии 1.14.1.

DRL
источник