【问题标题】:Visual Studio 2019 ignoring tab preferenceVisual Studio 2019 忽略选项卡首选项
【发布时间】:2020-05-06 01:29:33
【问题描述】:

今天早上我正在用 VS2019 编程,然后开始我的一天。当我晚上坐下来继续编程时,我意识到它突然放置了空格而不是制表符!我的偏好设置为每种语言都放置制表符而不是空格,并且在前几天一直这样做。我更新了 VS 以确保,但问题仍然存在 - 无论我的偏好设置如何,都会突然放置空格而不是选项卡。

PS:我知道这个问题已经被问到here,但他们的解决方案是更新 VS - 这对我来说没有任何改变。

【问题讨论】:

  • 你还有其他插件吗,比如 Resharper?
  • 不,我使用的是开箱即​​用的 VS2019(当然,用户偏好除外)

标签: c# unity3d tabs visual-studio-2019 spaces


【解决方案1】:

我找到了解决方案!在选项中,转到文本编辑器 > 高级并关闭“使用自适应格式”。它根据给定文件的现有格式覆盖了我的偏好

【讨论】:

  • 感谢您的回答。到目前为止,它似乎基本上没有记录。我希望这在未来有所改变。
  • 9 个月后(2020 年 9 月),这个新功能和“响应式代码完成”功能仍然没有记录。 VS 中的帮助按钮没用。来吧,微软,你比这更好。
  • 对我没有任何影响。
【解决方案2】:

也许这会有所帮助,因为我遇到了同样的问题,检查了答案中提到的所有常见位置Tools -> Options -> Editor -> yadda yadda ...,但没有任何帮助。

现在我找到了隐藏在一些评论中的解决方案。我从 git 下载的项目在范围内有一个名为 .editorconfig 的文件,它覆盖了您可以在 Tools 菜单中设置的设置。

寻找一行

indent_style = spaces

并将其更改为

indent_style = tab

【讨论】:

  • 这太棒了,我在其他任何地方都没有看到过这样的文档。谢谢。
【解决方案3】:

这非常令人沮丧 - 我发现即使我正确设置了编辑器配置,VS2019 也会自发地在文件中插入标签。

我非常喜欢制表符,但在我目前的工作中他们使用空格,所以你必须同意。

令他们沮丧的是,我的文件会使用标签签入,当然 Git 会喋喋不休地告诉你有关更改的内容。

事实证明,根据这个帖子:https://developercommunity.visualstudio.com/t/visual-studio-20194-c-insert-spaces-instead-of-tab/847853Visual Studio 2019 将基本上忽略您的设置,并根据文件的内容决定自发切换到它认为正确的内容。

这显然不能改变:

这是 Visual Studio 中的自适应格式行为:编辑器 启发式地确定当前文件是否应该使用制表符或空格 用于缩进。

我们目前没有禁用自适应空白的选项,但是 如果人们觉得这很重要,我们可以添加它。

很多人都在抱怨,但你会得到(目前的标准)免责声明,即“我们在用吱吱作响的轮子工作”。

所以我们只能靠自己了。

因此您可以尝试将其关闭,但 VS2019 仍会以它认为正确的方式维护文件 - 即使文件中只有一个 TAB。

因此,唯一完整的修复,再次直接来自 Microsoft:

第三,如果您在代码仓库中使用 .editorconfig,我们将始终 尊重这些设置。不需要使用 .editorconfig,但是 任何对维护编码风格特别感兴趣的人 应该知道我们的VS指导原则是永远不相信 我们“足够聪明”可以覆盖 .editorconfig。

我的完整编辑器配置:

[*]
indent_style = space
indent_size = 3
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false

注意“end_of_line”...这也解决了 WSL 的问题,否则 Git 可能会在 .sh 文件中将您的行尾更改为 CRLF ...这不适用于 WSL。

除了这个额外的解决方案,设置你的 .gitattributes 文件:

* text=auto eol=lf

*.{cmd,[cC][mM][dD]} text eol=crlf
*.{bat,[bB][aA][tT]} text eol=crlf
*.cs                  text eol=crlf
*.xaml                text eol=crlf
*.csproj              text eol=crlf
*.njsproj             text eol=crlf
*.pyproj              text eol=crlf
*.sln                 text eol=crlf

所以你可以用一块石头杀死两只鸟。

【讨论】:

  • 我最近遇到了一个需要选项卡的项目,而不是空格[公司其他人要求的]。所以,.editorconfig 是唯一能拯救你的东西!这样每个项目都可以运行自己的标准。
  • 标准很棒,每个人都应该有一个。
【解决方案4】:

尝试所有这些(解决了我的问题):

工具->选项->文本编辑器->高级->关闭“使用自适应格式”

工具 -> 选项 -> 文本编辑器 -> 所有语言 -> 选项卡 -> 保留选项卡

工具 -> 选项 -> 文本编辑器 -> C# -> 选项卡 -> 保留选项卡

【讨论】:

    猜你喜欢
    • 2021-01-07
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多