VSCode插入“不间断空格”而不是常规空格
Posted
技术标签:
【中文标题】VSCode插入“不间断空格”而不是常规空格【英文标题】:VSCode inserting "non-breaking spaces" instead of regular spaces 【发布时间】:2021-09-23 08:40:14 【问题描述】:我试图弄清楚为什么 VSCode 有时会决定随机插入“不间断空格”U+00A0
而不是常规空格,以及如何阻止这种情况发生?
这是导致问题的不同类型的空格字符,如我之前的问题GitHub markdown not rendering and git detecting changes when no changes中所见@
这在 Mac OS 和 Windows 上都发生在我身上,其他人也遇到过这个问题。虽然这个问题是关于 VSCode 的,但是在线 GitHub markdown 编辑器上也有这个问题。
我该如何解决这个问题?
复制步骤
在 VSCode 中编辑一个 markdown .md
文件一段时间。
放入很多标题,例如# my heading
或## my sub-heading
。
如果你有降价扩展,你可以CTRL/CMD + SHIFT + P
和Open preview to the side
。
您最终应该会注意到其中一个标题没有呈现,如果您在 HxD 等十六进制编辑器中打开文件,您会注意到在 @ 之后有一个不间断空格而不是常规空格987654329@ 字符。
可能的原因
Windows 上的反引号`
字符可以与键盘上的字母组合,例如a
,结果为à
。也许使用反引号导致空格字符变成不间断空格?然而,这并不能解释 Mac OS 上的问题,因为反引号不能与其他字符组合。
【问题讨论】:
【参考方案1】:我在 Mac OS 上也有很多这样的情况,但事实证明,在使用修饰键后键入 space
时,我仍然稍微按住 option
键(或者可能是键盘上的 shift
)输入#
我已经安装了https://marketplace.visualstudio.com/items?itemName=viktorzetterstrom.non-breaking-space-highlighter&s-s-r=false#overview 以便及早发现我的错误。
【讨论】:
谢谢我试试扩展 有一个名为 Fix Irregular Whitespace 的扩展程序在保存时替换了这个特定字符(而不是突出显示它)。 当您说“选项”时,您的意思是“转移”吗?我通常按 shift-3 键入 #。这个 GitHub 问题说 shift-space 给你一个 U+00A0:github.com/microsoft/vscode/issues/13239 我的意思是option
但应该提到我使用的是 GB 键盘。【参考方案2】:
我花了很多时间试图弄清楚为什么我从 VScode 复制和粘贴的“mv foo bar”命令返回 command not found
。原来 mv 和 foo 之间的空间是一个不间断的空间,我只是通过将它粘贴到一个 unicode 文本转换器来确定它。我真的很想知道为什么会这样,如果它是我可以禁用的设置。我使用的是 Windows 10,所以我认为这不仅仅是 Mac 问题。
【讨论】:
我在 Windows 上也遇到过这个问题,所以绝对不仅仅是 mac 问题(虽然我有一段时间没有注意到)。 我可以在 Linux 上确认同样的问题 不,它似乎是零宽度空间 U+200b,@Dries 提到的扩展名没有检测到它 真是一场噩梦!我从很久以前就受过这种痛苦。你知道谁添加了非中断空间吗?是 VScode,也许是扩展?我主要通过 Markdown 文档体验过这一点。【参考方案3】:我也遇到过这种情况,但我确定我无意中仅使用空格键插入了不间断空格。我发现hexdump plugin 对诊断问题很有用。我仍然不知道如何避免它。
【讨论】:
以上是关于VSCode插入“不间断空格”而不是常规空格的主要内容,如果未能解决你的问题,请参考以下文章