为何Visual Studio 2012执行HTML自动格式化(Ctrl+K+D)不收回缩进,VS2010却会重新缩进?
VS2010与VS2012 HTML自动格式化(Ctrl+K+D)的缩进差异
嘿,我之前也碰到过VS2012这个HTML格式化的小问题,和你描述的完全一致——它和VS2010在缩进处理上的逻辑确实不一样:
- VS2010的表现:按下
Ctrl+K+D时,它会彻底重新计算HTML内容的缩进规则,不管你之前手动给内容加了换行还是缩进,它都会根据代码块的结构重新调整到最优的缩进层级,甚至会把过长的单行文本(比如你提到的长<p>标签内容)自动拆分换行并适配缩进。 - VS2012的表现:同样是
Ctrl+K+D快捷键,但它不会主动重置已有的缩进,也不会对已经换行的文本重新调整结构。如果你的HTML已经手动换好行并加了缩进,它会原封不动保留这些格式,不会像VS2010那样“强制”优化缩进。
拿你举的例子来说:
原始长内容代码:
<p>Line1 Line1 Line1 Line1 Line1 Line1 Line1 Line1 Line1 Line1 Line1 Line2 Line2 Line2 Line2 Line2 Line2 Line2 Line2 Line2 Line2 Line2 Line3 Line3 Line3 Line3 Line3 Line3 Line3 Line3 Line3 Line3</p>
在VS2010中执行Ctrl+K+D后,会被自动格式化为(根据编辑器宽度自动换行并添加合适缩进):
<p> Line1 Line1 Line1 Line1 Line1 Line1 Line1 Line1 Line1 Line1 Line1 Line2 Line2 Line2 Line2 Line2 Line2 Line2 Line2 Line2 Line2 Line2 Line3 Line3 Line3 Line3 Line3 Line3 Line3 Line3 Line3 Line3 </p>
而在VS2012里执行相同的快捷键,如果原始内容是单行长文本,它大概率会保持单行状态;如果是已经手动换行带缩进的内容,它会完全保留你的手动格式,不会重新调整缩进。
要是你想让VS2012尽量贴近VS2010的缩进效果,可以试试调整编辑器的HTML格式化设置:
- 打开工具 → 选项 → 文本编辑器 → HTML → 格式化
- 勾选“重新缩进整个文档”相关选项(具体名称可能因版本略有不同),同时调整“换行”规则,比如设置“超出指定长度时自动换行”的阈值。
不过要注意,VS2012的HTML格式化引擎本身做了调整,就算改了设置,也没办法100%复刻VS2010的效果,但能缩小两者的差异。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

