この問題は本家でIssueにもなっている。 解決方法 イベントの流れをみると、どうやらIME入力中にkeypressとかkeydownが発生するのが主な原因だったようなので、IME入力中のkeypressはキャンセルするようにした。 cm = CodeMirror.fromTextArea(textarea, {inputStyle: 'contenteditable'}) if(UserAgentがモバイルであれば) { const origOnKeyPress = cm.display.input.onKeyPress // 元のkeypressを取得 cm.display.input.onKeyPress = function(e) { // iOSの絵文字キーボードのように、サロゲートペアの直接のkeypressは、CodeMirrorの処理を通すと文字化けるのでキャンセルする i