如何防止“标签和空格混在一起。解决这个问题?” 信息?


155

每当我将代码粘贴到.cs文件中时,我都会感到恐惧:“您混合使用了制表符和空格。要解决此问题吗?” 信息。它具有三个选项:

Tabify
Untabify
Don't show again

我先尝试了几次“ Tabify”,直到最终我受够了并选择了“不再显示”。但这是一种心理-我仍然明白。我什至尝试了“取消制表”,但无济于事。我可以调整一些设置来防止再次出现此问题吗?

VisualStudio2013 Tabify取消制表


在选择“不再显示”到消息再次出现之间,您是否编辑过文件?是否可能由于您的编辑而创建了新的“混合制表符和空格”情况?
David K

有可能,但是我并没有做任何与以往不同的事情,并且仅在此项目/环境中获得了味精(VS 2013)。
B. Clay Shannon

1
我怀疑这确实是VS2013的事情,因为我经常遇到带有混合制表符和空格的文件,而我使用过的Visual Studio版本(其中一些,都是2013年之前的版本)从未抱怨过它。
David K

2
在VS2012中遇到了完全相同的问题
taz

Answers:


252

听起来您已经安装了Visual Studio Productivity Power Tools 2013。进入其设置,然后关闭“修复混合选项卡” ...

Tools -> Options -> Productivity Power Tools -> Turn Extensions On/Off

如果具有默认的VS设置,则编辑器中的选项卡将转换为空格。因此(理论上),如果在出现消息时单击“取消制表”,它将把所有制表符都转换为空格,并且下次不会出现错误。您是否正在与其他在IDE中具有不同选项卡设置的开发人员一起工作?

更新:在Visual Studio 2017及更高版本中,这是一个名为“修复混合选项卡”的独立扩展,可以从“扩展和更新”窗口(工具>扩展和更新)禁用或卸载。

在此处输入图片说明


不,我是唯一从事此项目的人。它不在源代码管理中(我只是使用一个插件,该插件可让我在需要时随时“备份项目”,并将其保存到.zip文件中)
B. Clay Shannon

1
大声笑...值,我只是启用了设置,使用记事本将一堆选项卡放入我的文件中,然后得到提示。单击取消制表符会将所有选项卡都变成空格,而我再也没有收到该文件的消息。
Anthony Chu

在这个“生产力工具”花了我几个小时的调试之后,它已关闭。它“固定”了类之间的空间,将其更改为选项卡,由于布局的方式看起来就像一个空间。当然选择那个班?不可能,因为它是“ classA [tab] classB”。
David T. Macknet,

8
现在需要针对VS2017进行更新。事实证明,这是它自己的扩展名,现在可以禁用
Joe Phillips

@JoePhillips您是否发现了有关VS2017的任何信息?我什至卸载了该扩展程序,但仍然收到该烦人的消息。(顺便说一句:扩展名的设置卸载并重新启动仍会在vs设置窗口中显示)。
勒内·沃格特

74

Visual Studio 2017的更新。如果要禁用“选项卡和空格混合,请解决此问题?” 消息,你应该去

工具→扩展和更新…

在弹出的窗口中,找到“修复混合选项卡”(下图),然后根据需要单击“禁用”或“卸载”。

禁用混合选项卡


3
我希望它会自动执行。我已将文本编辑器设置为使用制表符而不是空格,但是当我转到新行时,缩进设置为空格。
Sinjai

1
同样适用于Visual Studio 2019。
userom

3
对于VS 2019,它是“ 扩展程序→管理扩展程序 ”。
Uwe Keim

13

相关:如果您确实希望Productivity Power Tools通知您制表符/空格,但是单击“ 修复”后一直保持正确的消息状态,然后在“工具”>“选项”>“文本编辑器”>““语言”>“制表符”中查找。

将此设置为“ 保留标签”

如果将其设置为“ 插入空格”,然后单击“电动工具”通知上的“ 保留”选项卡,则VS将在保存后重新插入空格,导致该通知立即再次弹出... aa,现在您陷入了循环。


3

使用vim run:retab编辑文件并保存文件,此操作完成!

vim file 
:retab
:wq

使用:retab,您可以转换空格中的所有标签,如果您设置expandtab(:set expandtab),则意味着展开所有空格中的标签,反之亦然(:set noexpandtab),所有用空格制作的标签都将转换为标签。


或只是在Visual Studio中自动格式化,它就可以做同样的事情
John Livermore
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.