VSCode Vimでは/から検索する際、デフォルトでは大文字小文字が考慮されます。そこで、大文字小文字を区別しないようにしたい場合の設定方法を紹介します。 vim.ignorecaseを有効にする …
VSCode Vimでは、Insertモードで日本語を入力した後にNormalモードへ戻っても、IMEはオンのままです。
そのままhjklで移動しようとすれば、「っっ」みたいな入力がされてイラッとします。
im-selectの代わりにzenhanを使って解決する
zenhan
VSCode VimのGitHubを読む
まず頼るなら本家です。
公式のGitHubページを読みました。
すると、以下の見出しが目に入ります。
Input Method
Disable input method when exiting Insert Mode.
( 挿入モードを終了するときに入力方式を無効にします。 )
なんだ、あるじゃん。
と思ってやってみますが、これWindowsではダメなんです。
Macのユーザーであれば、ここの手順通りim-selectを導入していけばキレイに解決できます。
Windowsの日本語IMEって他言語とは違って、半角/全角キーで英数・日本語を切り替えることが出来ます。
これって本当は珍しい話で、通常は日本語IMEとUSキーボードの二種類をセットアップし、「Winキー+スペース」等でキー入力方式ごと切り替えて二種類の言語を対応するのは普通なんです。
そして、im-selectが出来るのはソレです。
決して、半角/全角キーで英数・日本語キーを切り替えられる訳ではありません。
入力方式を切り替えることが出来るだけなので、日本語入力方式の中で日本語入力か英数かなんて区別も出来ず、設定も出来ません。
Winキー+スペースでトグル方式で日本語・英語を切り替えるのが苦ではなければ、US言語キーボードを追加してim-selectを設定すれば恐らくWindowsでも設定可能です。
私は無変換(半角)、変換(全角)で入力方式を切り替えていて、押しにくいWinキー+スペースでトグル方式なんて嫌なので辞めました。
Vim本家のようにset iminsert=0を設定
set iminsert=0をセットするだけでIMEオフを実現できれば楽ですよねー…
VSCode Vimでは無理でした。
ですが、:setコマンドないんです…。
駄目でした。
IME側で解決する
VSCodeでは手が出ない領域じゃないかという気がしてきたので、見方を変えました。
IMEやGoogle日本語入力側でInsertモードを抜けるキー(Esc, Ctrl+[)に対してIMEオフのホットキーを割り当てることで、IME制御下でコントロール出来ないか試してみました。
結果、一応は機能するのですが問題が残ります。
Insertモードを抜けるキーを、二回押さなければいけないんです。
全角でInsertモード→Ctrl+[→半角に切り替わる(切り替わるだけで本来のCtrl+[は入力されていない)→もう一度Ctrl+[→Normalモードへ戻る
という流れで、全角モードの場合はInsertモードを抜けるキーを二回押す必要があります。
なんか連打するみたいで気が進みませんが、現時点ではこのぐらいの解決策しかないようでした。
また、同じ入力方式の中で入力言語が切り替わる言語は多くはないので、公式で優先的に対処してもらえる可能性は低いのではないかと思います。。
[…] 元々Windows環境でVSCode Vimを使っていました。 WindowsではVSCode VimでInsertモードからNormalモードへ戻った時、WindowsのIMEをオフにする方法の記事にあるように一筋縄ではいきませんでした。 Mac […]