質問: vimのキーバインドで`Ctrl``;`をインサートモードで利用したいと考えています。 ``` inoremap ``` で登録しても機能しません。 `C-;`を利用したいので、どのように記述をすればいいのか、分かる方教えて下さい。
回答: gvim は端末の文字入力をエミュレートしています。ですので結果から言いますと `CTRL`-`;` は使えません。 端末の文字入力で `SHIFT` は ASCII 入力コードから -0x20 シフトする(6ビット目を落とす)キーにアサインされています。つまり `a` (0x61) は (0x41) `A` になります。また `CTRL` は ASCII 入力コードを -0x40 シフト(7ビット目を落とす)するためのキーにアサインされています。つまり `A` (0x41)に `CTRL` を合わせると (0x01) になり、また`CTRL`-`H` は 0x08 つまり `BS` になるのです。 `;` (0x3B) は元々7ビット目が 0 なので `CTRL` を合わせても何も変わりません。ですので一般的な端末エミュレータでは `CTRL`-`;` は使えません。これと同じ理由で gvim でも `CTRL`-`;` は使う事ができません。