vscode控制字符引起的问题以及解决思路

3

1. 环境

  • macOS Sierra 10.12.5
  • vscode 1.20.0 最新版

2. 如何重现这个问题

在使用中文输入法输入中文的时候,一直按后退键,例如输入sfsf,当你按了4下后退键时,你会发现,搜狗输入法弹出框虽然消失了,但是页面上还会剩下一个s, 这是你如何再次按一下后退的话,s就会变成bs, 变成隐藏字符。这个一般是右边有markdown渲染插件时才会出现。

从更确切的角度说,是你的编辑器一旦开了webview,就会出现这个问题,即使是vscode的欢迎页,也是webview,也会导致这个问题。所以最好在写代码时尽量关闭webview。

3. 如何让隐藏字符现身

Mac版的vscode控制字符一般是不会显示出来的,可以用一下的方法让其显示出来

"editor.renderControlCharacters": true

在编辑器中显示的像很小的BS, 表示backspace的意思。一般是在输入时,按了后退或者删除会偶尔出现这个字符。

4. 隐藏的控制字符会出现什么问题?

4.1. 控制字符在github上会出现问号

例如下图的的和同字之间就是出现一个隐藏字符,在github上就会出现一个带有背景的问号。

4.2. 控制字符在Hexo NexT Local Search 会导致search.xml渲染失败,搜索框一直在转圈

如果你使用浏览器打开search.xml,会发现解析报错

5. 如何解决

5.1. 手动删除隐藏字符

可以使用替换,先复制一个隐藏字符,然后把隐藏字符替换成空

5.2. 使用插件 Remove backspace control character

Remove backspace control character

在本家chromium已被合并,因此,在8月上旬发行的vscode 1.15将会重新确定(vscode 1.15, electron 1.7.4)。事实上,到现在这个问题还是没解决的

特点

格式化程序,用于删除打开的文档中包含的控制字符。要被删除的控制字符默认如下。

/[\u0000]|[\u0001]|[\u0002]|[\u0003]|[\u0004]|[\u0005]|[\u0006]|[\u0007]|[\u0008]|[\u000b]|[\u000c]|[\u000d]|[\u000e]|[\u000f]|[\u0010]|[\u0011]|[\u0012]|[\u0013]|[\u0014]|[\u0015]|[\u0016]|[\u0017]|[\u0018]|[\u0019]|[\u001a]|[\u001b]|[\u001c]|[\u001d]|[\u001e]|[\u001f]|[\u001c]|[\u007f]/gm

用法

  • "editor.formatOnSave": true 如果被设定,保存时启动
  • "editor.formatOnType": true 在被设定的情况下,进行变换时;输入时启动

5.3. 坐等官方给出更好的解决方案

官方这个bug依然还是open状态。Using IME with markdown preview enabled, press ESC/BACKSPACE leads in control characters #37114

5.4. 关闭所有webview

这个问题一般出现在标签页含有webview时发生,所以在升级到vscode最新版后,在写代码时要注意,不要开启任何有webview的标签页,其中包括

  • 关闭markdown渲染插件实时渲染的功能
  • 关闭vscode欢迎页标签页

6. 为什么官方不直接解决这个问题?

7. 参考


如果觉得我的文章对你有用,请随意赞赏

你可能感兴趣的

流浪大法师 · 2018年02月25日

我之前遇到过这个问题,然后找了好久都没有找到相关的信息,弱弱的问一下,你是怎么Google的?关键词是咋样的?求告知(PS:不要怀疑我的英文水平,一般的关键词搜索不在话下)。

github image

回复

0

一般来说,这个问题会导致github上的markdown上渲染时出现问号,你如果在谷歌上搜索:github markdown 出现问号,这样应该会出现知乎上的讨论:Mac 上的 VSCode 编写 Markdown 总是出现隐藏字符?

或者你搜索:vscode markdown 按两次回车出现特殊字符, 这样也是应该可以搜到的。

你搜不到的原因可是你的关键词里有whitespace, 它是空格的意思。从空格这个角度搜索,肯定搜不到特殊字符,或者按两次回车出现这种结果的。

如果你能看到知乎上的那个讨论,你就会往控制字符的角度去分析了。

你搜不到的原因是问的问题就错了。所以弱弱的给你一个建议,搜索问题时,最好使用问题的现象,例如出现特殊字符,出现问号去搜索,而不是自己按照原因去搜索,因为自己想到的原因可能是错的。

Carl 作者 · 2018年02月26日
0

@王端端 确实是我的问题,主要是我不知道控制字符,谢谢啦

流浪大法师 · 2018年02月26日
载入中...