为什么 VS Code 不断关闭我的“自动换行”设置?

问题描述 投票:0回答:1

在 VS Code 中工作时,我经常注意到(有时每隔几分钟)它会在“视图”选项卡下关闭我的自动换行设置,并且必须多次重新启用它,这非常令人沮丧在我的工作期间。

知道为什么吗?

我不会关闭该应用程序。最多,我只是从 Chrome 切换回编辑器,或者在编辑器中打开的文件之间切换。然而它不断地关闭我的自动换行。也只有这个设置,没有其他。

非常感谢任何信息。

visual-studio-code word-wrap
1个回答
0
投票

微软在这里回答了这个问题:https://github.com/microsoft/vscode/issues/21124#issuecomment-308644030

复制并粘贴到下面:

是的,这是一种“设计”行为,旨在解决我们的缺点。

  • 编辑器是垂直虚拟化的(即仅将视口中的可见线插入到 DOM 中)
  • 但是,编辑器不是水平虚拟化的(即,如果一条线可见,则会将其整体发送到 Chromium 进行绘制)
    • 我们不进行水平虚拟化,因为这需要我们读取字体信息,并在我们这边、在我们的 JS 运行时、跨操作系统实现 Unicode 布局 + 字体布局规则。今天,我们将文本布局留给浏览器(例如 RTL、bidi 文本等)。此外,布局算法的任何变化。绘画算法会产生很多错误,因此我们还需要自己绘制所有角色。
  • 因此,如果视口中可见一条长线,我们会将整条线提供给 Chromium。 Chromium 当然只绘制可见部分,但它必须处理整条线。不幸的是,如果行很长,这会导致 Chromium 稍微冻结,这使得滚动这些长行时的体验非常糟糕。
  • 作为一种解决方法,我们实现了一种启发式方法,尝试识别“缩小”文件,即具有很长行的文件对于源代码来说非常不典型,并且可能表示资源已内联到源代码中或者我们正在处理CSS/JS/等。缩小文件。
  • 我们的启发式方法包括计算位于常规行上的字符与位于长行上的字符。长行是指超过 10k 个字符的行。如果超过 50% 的文件字符位于长行上,则我们认为该文件是“缩小”文件。
  • 对于此类文件,我们称之为“由长行控制”,我们将包装文件以防止我上面提到的冻结。我所说的冻结是指有时在编辑器中绘制一帧可能需要超过 20-30 毫秒,这很快就会变得明显,因为大线超出视口或进入视口内部,但当然取决于实际线等。
  • 解开此类文件的唯一方法是通过 alt+z 或菜单或仅在这种情况下出现在编辑器标题区域(操作)旁边的特殊图标,并且解开对于当前窗口生命周期来说是临时的。

对于看起来像错误的有趣体验,我感到很抱歉,但这是避免冻结/暂停的一种(可能过于复杂)解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.