VScode 自动缩进和缩进指南,以及制表大小 (editor.tabSize)

Mat*_*Moy 7 indentation visual-studio-code

我有一个使用 4 列缩进级别的文件,并假设一个制表字符对应于 8 个空格,如下所示(我.用来表示一个空格,并<------>表示一个制表字符):

class Foo {
....void bar() {
<------>if (boz) {
<------>....return x;
<------>}
....}
}
Run Code Online (Sandbox Code Playgroud)

这对于某些编码风格很常见,例如Java 的 Oracle 编码约定

应该使用四个空格作为缩进的单位。缩进的确切构造(空格与制表符)未指定。制表符必须恰好每 8 个空格(而不是 4 个)设置一次。

我无法使用 VSCode 正确呈现它:

  • 如果我设置editor.tabSize为 4,那么它的渲染效果会很差
class Foo {
....void bar() {
<-->if (boz) {
<-->....return x;
<-->}
....}
}
Run Code Online (Sandbox Code Playgroud)
  • 如果我设置editor.tabSize为 8,则文本会正确呈现,但缩进指南不正确(void bar()缩进级别缺少指南):

压痕指南

更重要的是,自动缩进(按“tab”键,或在{字符后按“return”时即时缩进)现在缩进了 8 列,使编辑器几乎无法使用。

一个明显的解决方法是仅使用空格进行缩进,但这在打开预先存在的文件时不适用。

有没有办法将缩进指南配置为每 4 列显示一次,同时仍然每 8 列呈现选项卡?

editorconfig跨编辑器配置文件规范中,这对应于我希望能够独立更改的tab_widthindent_size属性。

我以前的Emacs用户,这将对应于tab-widthc-basic-offset的例子。

Von*_*onC 2

2020年评论中提到的issue,microsoft/vscode第10339期,终于在2022年11月关闭了(!)

PR 155450允许为缩进和制表符的显示宽度设置单独的值,这是一些旧项目和/或编码样式的常见要求。

除了添加对editor.indentSize属性的支持之外,状态栏上的缩进选项也已更新,以允许独立配置editor.indentSizeeditor.tabSize

所以:

editor.indentSize:用于缩进的空格数或tabSize使用来自 的值的“ ” editor.tabSize。打开
时,此设置将根据文件内容被覆盖。editor.detectIndentation

这应该很快就会在VSCode Insiders中提供,并与 VSCode 1.74(2022 年 11 月)一起发布。