VSCode автоматические отступы и направляющие отступа, а также размер таблицы (editor.tabSize)

#visual-studio-code #indentation

#visual-studio-code #отступ

Вопрос:

У меня есть файл, использующий уровень отступа в 4 столбца и предполагающий, что символ табуляции соответствует 8 пробелам, вот так (я использую . для представления пробела и <------> для символа табуляции):

 class Foo {
....void bar() {
<------>if (boz) {
<------>....return x;
<------>}
....}
}
  

Это характерно для определенных стилей кодирования, таких как соглашения Oracle о кодировании для Java:

В качестве единицы отступа следует использовать четыре пробела. Точная конструкция отступа (пробелы или табуляции) не указана. Табуляции должны быть установлены ровно через каждые 8 пробелов (не через 4).

У меня возникли проблемы с правильным отображением этого с помощью VSCode:

  • Если я установлю editor.tabSize значение 4, то он будет плохо отображаться как
 class Foo {
....void bar() {
<-->if (boz) {
<-->....return x;
<-->}
....}
}
  
  • Если я установлю editor.tabSize значение 8, то текст будет отображаться правильно, но направляющие отступа неверны (отсутствует направляющая для void bar() уровня отступа):

направляющие для отступов

Что еще более важно, автоматический ввод отступов (нажатие клавиши «tab» или «на лету» при нажатии кнопки «return» после { символа) теперь состоит из 8 столбцов, что делает редактор практически бесполезным.

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

Есть ли способ настроить отображение направляющих для отступов через каждые 4 столбца, сохраняя при этом отображение вкладок через каждые 8 столбцов?

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

Я бывший пользователь Emacs, и это будет соответствовать, например, tab-width и c-basic-offset .

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

1. По теме: marketplace.visualstudio.com/items?itemName=spywhere.guides и hudochenkov.com/posts/spaces-to-tabs … и, к сожалению, это только для VS.

2. не могли бы вы предоставить информацию о версии для OS и VS Code?

3. Это VSCode 1.48 в Ubuntu 20.04.

4. Хорошо, я нашел проблему: github.com/microsoft/vscode/issues/10339 . Был открыт некоторое время, но исправление, похоже, не планируется.

Ответ №1:

Проблема, упомянутая в комментариях в 2020 году, microsoft/vscode выпуск 10339, наконец, была закрыта в ноябре 2022 года (!)

PR 155450 позволяет иметь отдельные значения для отступа и ширины отображения символов табуляции, что является общим требованием некоторых старых проектов и / или стилей кодирования.

В дополнение к добавлению поддержки editor.indentSize свойства, параметры отступа в строке состояния были обновлены, чтобы разрешить независимую настройку editor.indentSize и editor.tabSize .

Итак:

editor.indentSize : Количество пробелов, используемых для отступа или ‘ tabSize ‘ для использования значения из editor.tabSize .
Этот параметр переопределяется в зависимости от содержимого файла, когда editor.detectIndentation включен.

Это должно быть доступно в ближайшее время в VSCode Insiders и выпущено с VSCode 1.74 (ноябрь 2022).

Ответ №2:

К сожалению, на данный момент нет настройки или расширения, которые основывались бы только на (пробелах / табуляциях текущего размера табуляции).