
VS Code の VSCodeVim プラグインで文字挿入時に直後の文字が削除されてしまうときの対処方法
VS Code で Vim のプラグイン(VSCodeVim)を利用時に、文字挿入時に以下の状態になったときの対処方法を紹介します。
- 文字列に対して
i
で挿入(入力モードへ) - 日本語に切り替えて文字を入力
- 挿入箇所の直後の文字が削除される
「ここに文章があります」の「が」の文字の挿入(i
)により削除されてしまう様子です。「sounyu」とタイプしたときの「s」が残ってしまうし挙動がおかしい。
時間が解決してくれないかと数日放置して限界が来たので調べました。
原因
VS Code 1.101.1 と、VS Code の拡張プラグイン VsCodeVim 確認されている事象でした。以下のリンクが本事象の Issue です。
- Chinese input in normal mode is being inserted directly. · Issue #9678 · VSCodeVim/Vim
- VSCode switching input method fails · Issue #251518 · microsoft/vscode
対処方法
2025 年 7 月 26 日時点では VS Code の設定を変更するワークアラウンドしか対処方法が見当たりませんでした。
ワークアラウンド
- VS Code の設定から
editor.editContext
で検索します Editor: Edit Context
のチェックを外します- (VS Code は再起動しなくても反映されました)
実行環境
私の実行環境は以下です。ワークアラウンドの対応後、事象は改善されました。
ツール | バージョン |
---|---|
VSCodeVim | 1.30.1 |
VS Code | 1.102.1 |
Mac OS | 15.3 |
少し考えてみる
どうやら VS Code と Vim のプラグインと入力の相性が悪くなってしまったようでした。
チェックを外した項目ってなんだったのか?
テキストエリアの代わりに EditContext API を使用するかどうかの設定項目でした。
Sets whether the EditContext API should be used instead of the text area to power input in the editor.
その前に EditContext API がなんなのかわかりませんでした。
EditContext API とは?
つまり、従来の入力方式と比べると高機能な新しい入力方式を使うか使わないかの設定項目でした。
EditContext API は、インプットメソッドエディター (IME) による変換、絵文字ピッカー、その他のプラットフォーム固有の編集関係の UI などの高度なテキスト入力体験に対応したリッチなテキストエディターをウェブ上で構築するのに利用できます。
今後修正される問題なのか?
今後 VS Code 側には修正が入るようです。Vim プラグインとの相性は修正入ったあとに確認しないとわからなさそうです。
おわりに
昔、似たような問題をブログにしたところ社内で地味に反響があったので今回も書いておきました。文章編集だけなら普通に Vim で編集すればよかったのですけど、VS Code + Claude Code でいろいろしたく、VS Code のことをリッチな Vim 扱いしている身としては大きな問題でした。プラグインのバージョン上がって解決されたら更新しようと思います。