首页 > 解决方案 > 在 VSCode 中使用制表符保留缩进或缩进的间距

问题描述

在 VSCode 中,当我有:

    /*
     * Comment
     */

如果我选择它并点击标签,我会得到:

        /*
        * Comment
        */

相反,如果我点击了 shift-tab,我会得到:

/*
    * Comment
    */

Ctrl-](如果这些应该有所作为)也会发生同样的情况Ctrl-[

我希望关闭 autoIndent 会阻止这种情况,但没有骰子。我还在 JSON 配置中关闭了 C++ 格式:

{
    "editor.autoIndent": false,
    "editor.detectIndentation": false,
    "C_Cpp.formatting": "Disabled"
}

有一个扩展程序一次将文本移动一个字符,这是一种概念验证,您可以用类似的东西覆盖您的制表键。但是您似乎不需要扩展来禁用此格式。

editor.autoIndent: false应该做我想做的事,只是坏了?

更新:我也在VSCode GitHub 上提出了这个问题

标签: visual-studio-codeauto-indent

解决方案


如果将Tab大小设置为1,它将执行与您引用的扩展相同的工作。

您可以通过单击右下角Tab来设置或大小:Space

更改制表符/空格大小

点击Spaces:4。然后,选择Indent Using SpacesIndent Using Tabs并选择大小1

更新:

我找到了一种完全满足您要求的方法(尽管它是通过扩展)。选择 Tab/Space 大小后1,安装并加载多命令扩展以执行 1-space 缩进“”次。然后,转到您的settings.json(文件>首选项>设置)并添加这两个命令:

{
    "macros": {
        "tab4times": [
            "tab",
            "tab",
            "tab",
            "tab"
        ],
        "shifttab4times": [
            "outdent",
            "outdent",
            "outdent",
            "outdent"
        ]
    }    
}

然后,在keybindings.json文件中(CTRL+P然后键入keybindings.json),修改CTRL+]CTRL+[键以执行新创建的命令:

[
    {
        "key": "ctrl+]",
        "command": "macros.tab4times",
        "when": "editorTextFocus && !editorReadonly"
    },
    { 
        "key": "ctrl+[",
        "command": "macros.shifttab4times",
        "when": "editorTextFocus && !editorReadonly"
    }
]

保存这些配置后,转到您的文本。现在按CTRL+]CTRL+[分别查看您想要的缩进缩进行为。

希望能帮助到你。


推荐阅读