## 事象 以下で`Ctrl+Space`のキーバインド(keymap)が設定できない。キーによって反応するものと反応しないものがある。 ```lua local key = vim.keymap.set -- TODO: 手動でオートコンプリート key("i", "<C-Space>", "なんでも") ``` ## 原因 (詳細は分からないが) ターミナルでは設定できないキーマップが存在するから。他に`Ctrl+ハイフン`なども。 ## 解決方法 [[AutoHotkey]]などでターミナル起動中だけkeymap可能なキーにリマップする。たとえば、以下のような感じ。 | キー | リマップ後のキー | | --------------- | ---------------- | | `Ctrl+Space` | `F5` | | `Ctrl+ハイフン` | `F12` | 具体的には[[AutoHotkey]]だと以下のようなスクリプトを書く。 ```autohotkey ;【概要】指定されたウィンドウがターミナルか ;【戻値】true / false isTerminal() { WinGet, ahk_process, ProcessName, A return ahk_process == "WindowsTerminal.exe" } ;Ctrl+Spaceキー (ターミナルの場合はCtrl+Spaceが使えないのでF5で代用) $^Space:: if (isTerminal()) { send {F5} } else { send ^{Space} } return ``` [[init.lua]]は以下。 ```lua -- Ctrl+Spaceで割り当てたいコマンド vim.keymap.set("i", "<F5>", "コマンド") ```