この記事は、Visual Studio Code 本体や使用されているライブラリで、発生する日本語 (CJK関係) の問題と対応策をまとめたものです。
この記事にはまとめませんが、CJK 特有の問題は完全に放置されているわけではなく、むしろ対処された問題のほうが多いことに注意してください。
バックスペース問題
概要
macOS において、バックスペース入力時に backspace (U+0008)
制御文字が別に紛れ込む。
初期設定で制御文字を確認できないため、気づかないうちに markdown-preview 等での文字化け、この制御文字を含むテキストの提出を行ってしまう。
原因
chromium による問題 714771 (解決済み) が原因。Electron の #9173 で v.1.7.2 に解決が期待されたが、Visual Studio Code が使用する 3.0.13 現在で解決されていない。~~2.0.x で解決される予定。~~VSCode への適用時期は未定。
対応策
フォーマット系拡張機能として、問題の制御文字を取り除く Remove backspace control character 拡張機能を使用する。
トラック
Visual Studio Code
chromium
Electron
EUC-JP のチルダ問題
概要
EUC-JP
文字エンコードを使用しているとき、キーボードの "~" を入力すると 「全角チルダ」 として保存される。例として秀丸は 「波ダッシュ」 に対応し 「全角チルダ」 を表示しないので文字化けが起こる。
原因
VSCode が使用する iconv-lite で正しく(?)マッピングされていないのが問題。根強い 「波ダッシュ」、「全角チルダ」 の問題に関連する。またこれらの問題はこの質問/回答が大変参考になる。
対応策
なし。
あきらめて UTF-8 を..
トラック
Visual Studio Code でこの問題はトラックされていない。
iconv-lite
検索するときエンコードを自動的に判別しない問題
概要
エンコードを指定して検索することはできるが、files.autoGuessEncoding
設定によって制御できない。
原因
依存先の検索機能の制限から files.autoGuessEncoding
を実行できないため。
対応策
拡張子別に設定をスコープできる []
等を活用しながら、適宜 files.encoding
設定を適応する。
トラック
Visual Studio Code
統合ターミナルで英語以外を検索できない問題
概要
統合ターミナルで英語以外を検索することができない。
原因
VSCode が使用する xterm.js が対応していないことが原因。
対応策
なし。
トラック
Visual Studio Code
単語を正しく認識しない問題
概要
cursorWordStartLeft
コマンド等による単語移動が想定した移動ではない。ダブルクリック時の選択範囲が意図した範囲ではない。editor.wordBasedSuggestions
設定を適用時の提案リストに単語ではなく文が表示される。などの問題が発生する。
原因
日本語を解析する機能が、VS Code には実装されていないことが原因。なお、カーソルの単語移動については英語以外を想定しないデザインと明言している (#25208)。
対応策
-
cursorWordStartLeft
等の移動または選択範囲の場合- Japanese Word Handler 拡張機能を使用する。
-
editor.wordSeparators
設定に、。「」【】『』()!? てにをはがのともへでや
あたりを追加する。
Japanese Word Handler
を利用する場合は、単語移動における精度が上昇するが、テキストをダブルクリックした時の選択範囲に影響しない。editor.wordSeparators
設定を利用する場合は、精度が下がるが、テキストの選択範囲にも影響する。
- 提案リストの場合
なし。
トラック
Visual Studio Code
単語移動
提案リスト
Visual Studio Code でこの問題はトラックされていない。
開いたファイルが文字化けするとき
概要
エンコードのデフォルト設定である UTF-8
ファイル以外を開くと、文字化けする。
原因
自動エンコード機能は実装されているが、あくまで 「推測」 なので必ずしも正しいものを選択しない。そのため、デフォルトで無効化されている。
エンコードの検出には jschardet が使用されている。
対応策
"files.autoGuessEncoding": true
を設定する。
トラック
Visual Studio Code
表示言語が英語のとき (日本語にする)
概要
(問題?)
UI の言語機能が外部の拡張機能に分離されたため、本体をインストール後に Language Pack を導入する必要がある。
対応策
Japanese Language Pack for Visual Studio Code を導入する。インストール後は、display language
コマンドを実行して locale:ja
に設定を変更する。
次のような通知は、右上の歯車マークから表示しないようにできる。