在 VSCode 中使用制表符保留缩进或缩进的间距

Posted

技术标签:

【中文标题】在 VSCode 中使用制表符保留缩进或缩进的间距【英文标题】:Preserve spacing on indent or outdent with tab in VSCode 【发布时间】:2019-04-18 22:48:11 【问题描述】:

在 VSCode 中,当我有:

    /*
     * Comment
     */

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

        /*
        * Comment
        */

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

/*
    * Comment
    */

Ctrl-]Ctrl-[ 也是如此(如果它们应该有所作为)

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


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

有一个扩展名为shifts text by one character at a time,这是一种概念验证,你可以用类似的东西覆盖你的tab键。但您似乎不需要扩展来禁用这种格式。

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

更新:我也将此作为issue on the VSCode GitHub

【问题讨论】:

***.com/a/29972553/1023911 有帮助吗? @WernerHenze Setting "editor.detectIndentation": false 仍然引导制表键破坏缩进或缩进材料中的间距...但是用制表符而不是空格填充左侧(我想要空格,但是要检查我是否使用标签的数据点不会破坏评论) 尽管这被 VSCode 发现并认为是一个错误,但我真的是唯一注意到这一点的人吗?我真的不喜欢剪切、粘贴、标签时的自动格式化行为。在我看来,人们应该能够相信从一个地方抓取东西并将它们放在其他地方可以保存它们,如果你想要否则应该运行一个特定的“重新格式化”命令。 谁说你是唯一看到问题的人?如果没有人回答,那就意味着没有人知道解决方案。顺便说一句,使用 .clang-format 和 ReflowComments: true 自动格式化评论,但它也无助于缩进。仅供参考:Visual Studio(不是 VS 代码)可以正确缩进,但也无法取消缩进。 如果您将Tab 的大小设置为 1,它将执行与您引用的扩展相同的工作。它在我身边。 【参考方案1】:

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

您可以通过点击右下角来设置TabSpace的大小:

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

更新:

我找到了一种完全满足您要求的方法(尽管它是通过扩展)。选择1 的制表符/空格大小后,安装并加载 multi-command 扩展程序以执行 1 个空格缩进 '' 次。然后,转到您的 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+[ 来查看你想要的缩进 em> 和 outdentation,分别。

希望对你有帮助。

【讨论】:

感谢您这样做!我现在正忙于其他一些事情,无法尝试,但我会假设它按照描述的那样工作......在时钟用完之前给你赏金。 :-) 谢谢你,@HostileFork。我非常感谢您信任我的回答。它对我来说效果很好,但是如果您在实施时有任何步骤不清楚,请告诉我。周末愉快!

以上是关于在 VSCode 中使用制表符保留缩进或缩进的间距的主要内容,如果未能解决你的问题,请参考以下文章

编辑器STM32CubeMx生成的代码改为4空格制表符缩进

编辑器STM32CubeMx生成的代码改为4空格制表符缩进

如何修复/转换 Sublime Text 中的空格缩进?

是否可以在 Vim 中显示缩进指南?

Eclipse:使用制表符和空格进行缩进

如何在 IntelliJ IDEA 中使用制表符进行缩进?