結論
結論から先に書きます。
VS Code + Vim拡張でかな漢字変換を使う人は、VS Codeのsettings.jsonファイルに"editor.editContext": falseを追加してください。
// ~/Library/Application Support/Code/User/settings.json
{
// (略)
"editor.editContext": false,
// (略)
}
これにより、「変換した文言が2回入力される」「変換した文言がさらにCopilotオートコンプリートと衝突して日本語がぐちゃぐちゃになる」といった問題が修正されます。
経過
この1か月ほど、上述の「変換した文言が2回入力されることがある」「変換した文言がさらにCopilotオートコンプリートと衝突して日本語がぐちゃぐちゃになることがある」という問題がVS Codeで頻発して困っていました。
Vimでiやaなどで入力モードにした最初の段階で起きることが多いのですが、必ず起きるとは限らない点が厄介でした(問題を動画としてキャプチャしようとしたのですが、欲しいときに再現できなかったため諦めました)。
とかくこうした日本語IME固有の問題は英語圏でググってもろくに情報が見つからないことが多いので手こずりそうな予感がしていたのですが、その通りでした。しかも問題の再現が難しいうえに、エラーメッセージを出さないこの手の問題は「バグった」「暴走した」「発狂した」など表現がバラつきがちなので検索キーワードをあれこれ変えて探す必要があります。
当初はGitHub Copilotのオートコンプリートの問題かと思って、合間を見てはオートコンプリート周りの設定をさんざん調べたのですが、空振り。
GPT-5に相談したところ、以下を追加すると解決するかもしれないとのことでしたが、これもハズレでした。
"editor.acceptSuggestionOnEnter": "off",
"editor.tabCompletion": "on",
しまいにはVS Codeを完全に削除して再インストールし、VimやCopilotオートコンプリートを含む最小限の拡張機能をセットアップしたのですが、それでも現象が止まりませんでした。
そして、ふと思ってVim拡張機能自体をオフにしてみたところ、まったく起きなくなることにやっと気づきました。Vim拡張が問題だったのか!
リポジトリのissueをIMEで検索したところ、以下のissueが見つかりました。
参考: The first character is repeated when inputting Chinese characters · Issue #9680 · VSCodeVim/Vim
早速settings.jsonに"editor.experimentalEditContextEnabled": falseを設定してみました。
ついでにこの情報がXにないかどうかをチェックしたところ、何と入れ違いでつい最近このコンフィグがeditor.editContextにリネームされていた(#251211)ことを知りました。情報ありがとうございます🙏
VSCode の editor.experimentalEditContextEnabled の設定を一時的に false にしとくとVim拡張利用時の日本語入力暴走を防げる件,設定自体が無くなってしまって終わってしまってる.
— か (@ka_) July 15, 2025
みんな解決策の方に全然いいねもリポストもしてくれないのでぶら下げておきます
解決策というほど大したものでも無かったですが…https://t.co/aWX8pESlRG— か (@ka_) July 15, 2025
なお以下のissueによると、この問題は中国語IMEでも起きていたとのことなので、IMEの種類は無関係とみなしてよさそうです。
おまけ
ついでに、VS Codeのsettings.jsonにeditor.accessibilitySupport: "on"を追加しておくと、CopilotのオートコンプリートやAIが作業を終えたときに軽く音が鳴るようになります。好みはあるかと思いますが、私は便利だと思います。
"editor.accessibilitySupport": "on",

問題発生時の環境