未だに直らない「VSCode で Markdown 執筆中に BackSpace・Delete キーを使うと制御文字が混ざる問題」の改善策
VSCode には謎のバグがある…。
VSCode で Markdown ファイルを執筆中、BackSpace キーや Delete キーで文字を消していると、時たま謎の制御文字が入力されることがあるのだ。
今回はこの事象の解説と、今できる改善策の紹介。
目次
どんな事象なの?
事象としては前述のとおり。BackSpace キーや Delete キーで文字を消している時に、時々制御文字が入力されることがある、というもの。初期設定では制御文字は画面に表示されないので、このまま文書を公開してしまって、別のビューアで見られた時に制御文字が化けて表示されたりして気が付く、ということが多い。
当該事象の GitHub Issues は以下。
- 参考 : Backspace can not erase the last one character during Chinese/Japanese IME conversion (macOS) · Issue #24981 · Microsoft/vscode · GitHub
- 参考 : Using IME with markdown preview enabled, press ESC/BACKSPACE leads in control characters · Issue #37114 · Microsoft/vscode · GitHub
VSCode がベースにしている Electron、の基盤である Chromium 由来の不具合だとか。
- 参考 : 714771 - Two backspaces required to delete last character in webview input - chromium - Monorail
Chromium 側のバグフィックスは終わっているようだが、VSCode に取り込まれていない。
僕もかなり以前からこの事象は知っていて、本稿執筆時点の最新バージョンである v1.31.1 の Mac 版でもこの事象を確認できた。
とりあえず未だ直らないので、できる対策を紹介する。
制御文字を表示する
まずはエディタ設定を変更し、制御文字を表示するようにする。コレで制御文字が可視化できる。
"editor.renderControlCharacters": true,
大抵はコレを入れていれば、入力中に気が付くはずなので良いかと。
拡張機能で自動除去する
vscode-bs-ctrlchar-remover という拡張機能があり、コレを入れるとファイル保存時に制御文字を自動削除してくれる。
- Remove backspace control character - Visual Studio Marketplace
- vscode-bs-ctrlchar-remover/README_ja.md at master · satokaz/vscode-bs-ctrlchar-remover · GitHub
制御文字をウッカリ見落とした、とかいう時もコレで安心。
以上
未だ「秀丸エディタ」「Sakura エディタ」のような国産のエディタが重宝されるのも、ちょっと分かるかも。全般的には VSCode が便利なんだけど、日本語に対する処理があと一歩という感じ (この事象には IME を使用する中国語圏の人も困っているみたいだが)。