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. 为什么官方不直接解决这个问题?

  • vscode底层使用了electron,这是electron的Backspace can not erase the last one character during Japanese IME conversion (macOS) #9173bug, electron不解决这个问题,vscode就不会解决。
  • electron底层使用了chromium, 这是chromium的Two backspaces required to delete last character in webview inputbug, chromium不解决,elctron就无法解决。
  • 综上,截止文章写出之时,这个问题依然没解决。

7. 参考

  • Mac 上的 VSCode 编写 Markdown 总是出现隐藏字符?
  • Hexo next 主题的 local search 功能失效,点击搜索链接无法弹出叠加层
  • Backspace can not erase the last one character during Chinese/Japanese IME conversion (macOS) #24981
  • Backspace can not erase the last one character during Japanese IME conversion (macOS) #9173
  • Two backspaces required to delete last character in webview input
  • 控制字符
  • Using IME with markdown preview enabled, press ESC/BACKSPACE leads in control characters #37114

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

  1. 商品秒杀,防并发解决思路

    我们在做电商项目的时候,经常会遇到抢购秒杀的问题,综合来说主要是两个问题 一,高并发情况下对数据库产生的压力 二,如何避免超卖(库存< 0)的情况. 针对这两个问题来谈下解决思路 一,缓解数据库 ...

  2. 爬虫之常见的反爬手段和解决思路

    1 服务器反爬的原因 爬虫占总PV(PV是指页面的访问次数,每打开或刷新一次页面,就算做一个pv)比例较高,这样浪费钱(尤其是三月份爬虫). 三月份爬虫是个什么概念呢?每年的三月份我们会迎接一次爬虫高 ...

  3. nginx代理响应报文体不全解决思路

    问题说明 环境说明: centos 6.5 nginx 1.13.7 tomcat 8.5+ jdk 1.8 问题描述 本地访问测试机接口发生异常 curl访问结果: tomcat日志: 解决思路 开 ...

  4. c语言链表交换,求单链表的数据交换解决思路

    当前位置:我的异常网» C语言 » 求单链表的数据交换解决思路 求单链表的数据交换解决思路 www.myexceptions.net  网友分享于:2013-11-04  浏览:14次 求单链表的数据 ...

  5. 网站访问慢解决思路详细图解

    老男孩老师讲授网站访问慢解决思路思想,感谢21期的李同学图解呈现,此图才能与大家见面! 如果看着小,单击还原大图,可清晰查看!本图为亿图制作:亿图使用技巧: http://v.youku.com/v_ ...

  6. get_headers()请求https报错解决思路

    场景:项目中客户端上传文件到OSS后,返回给服务端一个OSS的文件对象名称. 服务端拿到文件对象名称后,需要通过OSSClient生成一个签名url,然后提供下载服务. 下载服务中,拿到URL后要去校 ...

  7. Exchange出站队列堵塞解决思路

    Exchange出站队列堵塞解决思路 2007-02-28 21:58:02 标签:Exchange [推送到技术圈] 版权声明:原创作品,谢绝转载!否则将追究法律责任. 点到为止,真诚希望对各位同行 ...

  8. Qt新建项目No valid kits found解决思路

    Qt新建项目No valid kits found解决思路 第一次用Qt Creator创建Project时,进入Kit Selection窗口后,会提示No Valid kits found. Pl ...

  9. 机器学习算法一览,应用建议与解决思路

    机器学习算法一览,应用建议与解决思路 作者:寒小阳  时间:2016年1月.  出处:http://blog.csdn.net/han_xiaoyang/article/details/5046933 ...

最新文章

  1. POI处理Excel中的日期数据类型
  2. SAP RETAIL 为门店维护多个存储地点
  3. u-boot命令解释
  4. python 装饰函数
  5. POJ2154(Pólya定理与欧拉函数优化)
  6. ostringstream使用
  7. Python 学习笔记->《流畅python》学习
  8. python毕业设计作品基于django框架 景区购票系统毕设成品(6)开题答辩PPT
  9. 【5分钟力扣】118.杨辉三角 python
  10. 天龙源码框架分析_天龙八部源码描述【转】
  11. 会考计算机辅助制图,信息技术会考基础知识
  12. iOS 15 真机调试包 DeviceSupport
  13. HDU 6232 2017 哈尔滨 Confliction
  14. 无法加载SQLite.Interop.dll:找不到指定模块
  15. 数据泄露,数据防泄密该怎么做?
  16. LATEX之对文章排版的相关设置
  17. 如何从视频中分离音频/提取音频/提取视频
  18. STM32F411RE项目开发-1-点亮LD2小灯
  19. 背景动态变化登陆界面
  20. 基于高通410c开发板,开发android端家庭控制中心APP(1)

热门文章

  1. ASP.NET数据库访问系列教程01-概述篇 创建数据访问层(中)
  2. (转)关键字const有什么含意?
  3. Windows平台下搭建自己的Git服务器
  4. pycharm新建python file没有默认头_Pycharm 设置默认头的图文教程
  5. pythonwebview自动化测试_GitHub - githubwzg/python-appium: 基于PageObject UI自动化测试框架,支持Android/iOS...
  6. python代码技巧_让你python代码更快的3个小技巧
  7. 2 数据源配置_Spring, MyBatis 多数据源的配置和管理
  8. 查询hive表_大数据中Hive与HBase的区别与联系
  9. 企业微信:腾讯的“佛系”办公江湖
  10. 一个含n个顶点和e条弧的有向图以邻接矩阵表示法为存储结构,则计算该有向图中某个顶点出度的时间复杂度为