VSCode插入“非断行空格”而不是常规空格。
VSCode插入“非断行空格”而不是常规空格。
我正在试图弄清楚为什么VSCode有时候会随机插入“不间断空格”(非常规空格)U+00A0
,而不是普通空格,并且如何阻止这种情况发生?
这是一种不同类型的空格字符,会引起问题,正如我之前的问题所示GitHub markdown not rendering and git detecting changes when no changes
这在我的Mac OS和Windows上都发生过,其他人也遇到了这个问题。虽然这个问题是关于VSCode的,但它也会在在线GitHub markdown编辑器上发生。
我该如何解决这个问题?
重现步骤
在VSCode中编辑一个markdown .md
文件一段时间。
放入很多标题,比如#我的标题
或##我的子标题
。
如果你安装了markdown扩展,你可以使用CTRL/CMD + SHIFT + P
,然后选择Open preview to the side
。
你应该最终注意到一个标题没有渲染,如果你在像HxD这样的十六进制编辑器中打开文件,你会注意到在#
字符之后有一个非间断空格,而不是普通空格。
可能的原因
- 在Windows上,反引号
`
字符可以与键盘上的字母组合,例如a
,结果为à
。也许反引号的使用导致空格字符变成了非间断空格?然而,这不能解释在Mac OS上的问题,因为反引号不能与其他字符组合。
VSCode插入“非断行空格”而不是常规空格的原因是由于从Microsoft Skype或Microsoft OneNote中复制/粘贴代码时,这两个程序将常规空格转换为特殊的Unicode空格。
顺便说一下,自从1.63版本以来,Visual Studio Code会自动突出显示这些特殊空格。
要解决这个问题,可以使用以下方法之一:
方法一:手动替换特殊空格
1. 复制代码并粘贴到VSCode中。
2. 定位到特殊空格的位置。
3. 使用查找和替换功能(快捷键:Ctrl + H)。
4. 在“查找”框中输入特殊空格的Unicode值(例如,U+00A0)。
5. 在“替换”框中输入普通空格的Unicode值(例如,U+0020)。
6. 点击“全部替换”按钮以替换所有特殊空格。
方法二:禁用自动转换特殊空格
1. 打开VSCode。
2. 点击左下角的“设置”按钮(快捷键:Ctrl +,)。
3. 在设置页面中,搜索“non-breaking spaces”。
4. 在“Editor: Non Breaking Spaces”选项下,将其设置为false。
5. 关闭设置页面。
现在,当你粘贴代码时,VSCode将不会自动转换特殊空格。
使用上述方法之一,你可以解决在VSCode中插入非断行空格而不是常规空格的问题。
问题的原因是VSCode在插入空格时会默认插入非断空格(non-breaking space),而不是普通的空格。这会导致在复制和粘贴命令时出现问题,例如在Windows系统上执行"mv foo bar"命令会返回"command not found"错误。
解决这个问题的方法是禁用VSCode插入非断空格的设置。以下是具体的解决方法:
1. 打开VSCode编辑器。
2. 在顶部菜单栏中选择"File"(文件)选项。
3. 在下拉菜单中选择"Preferences"(首选项)。
4. 在下拉菜单中选择"Settings"(设置)。
5. 在设置页面的搜索栏中输入"non-breaking space"。
6. 在搜索结果中找到"Editor: Insert Spaces"(编辑器:插入空格)选项。
7. 将该选项的值设置为"off"(关闭)。
8. 关闭设置页面,重新启动VSCode编辑器。
通过按照以上步骤禁用插入非断空格的设置,可以解决在复制和粘贴命令时出现非断空格的问题。这样可以确保正确执行命令并避免出现"command not found"等错误。
需要注意的是,该问题不仅限于Mac系统,在Windows和Linux系统中也会出现。对于Markdown文档等其他类型的文件,也可能会遇到类似的问题。禁用插入非断空格的设置可以解决这些问题。
本文介绍了VSCode插入非断空格而不是普通空格导致命令复制和粘贴错误的问题,并提供了禁用插入非断空格的设置的解决方法。无论是在Windows、Mac还是Linux系统中,通过禁用该设置可以确保命令的正确执行。
问题出现的原因是在输入空格时,用户可能意外按下了其他键(如option键或shift键),导致插入了非断行空格(non-breaking spaces)而不是正常的空格。
解决方法有以下几种:
1. 安装名为"non-breaking space highlighter"的VSCode插件,它可以帮助用户及时发现并纠正这类错误。
2. 安装名为"Fix Irregular Whitespace"的VSCode插件,它可以在保存文件时自动替换这些特殊空格字符,而不是仅仅将其标记出来。
3. 根据用户反馈,在输入"#"字符后按下空格键时,可能会意外按下"option"键,导致插入了非断行空格。这个问题在GitHub的一个issue中有讨论:github.com/microsoft/vscode/issues/13239。
4. 如果用户使用的是GB键盘,那么在输入"#"字符后按下空格键时,可能会意外按下"option"键。因此,用户应该注意避免同时按下这两个键。
5. 在VSCode中,可以通过激活"View -> Appearance -> Highlight Whitespace"选项来显示非断行空格,这样用户可以直观地看到它们的位置。
以上是解决VSCode插入非断行空格而不是正常空格的几种方法,用户可以根据自己的需要选择合适的解决方案。