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

1. 环境

  • macOS Sierra 10.12.5
  • vscode 1.20.0 最新版

2. 如何重现这个问题

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

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

3. 如何让隐藏字符现身

Mac版的vscode控制字符通常是不会显示出来的,能够用一下的方法让其显示出来web

"editor.renderControlCharacters": true

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

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

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

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

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

若是你使用浏览器打开search.xml,会发现解析报错electron

5. 如何解决

5.1. 手动删除隐藏字符

可使用替换,先复制一个隐藏字符,而后把隐藏字符替换成空编辑器

5.2. 使用插件 Remove backspace control character

Remove backspace control characterui

在本家chromium已被合并,所以,在8月上旬发行的vscode 1.15将会从新肯定(vscode 1.15, electron 1.7.4)。事实上,到如今这个问题仍是没解决的spa

特色插件

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

/[\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. 参考

相关文章
相关标签/搜索