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. 參考

相關文章
相關標籤/搜索