🧑‍⚕️

【macOS】Neovim で Ctrl-ArrowKey が効かない時は

に公開

結論

自分の環境では macOS のキーボードショートカットとして Ctrl + ArrowKey が割り当てられていました。
それらを解除すると Neovim で有効になりました。

macOS Tahoe では以下の箇所に設定されていました。

システム設定 > キーボード > キーボードショートカット > Mission Control

必要に応じて Ctrl+ArrowKey が割り当てられている内容を無効にしたり、別のショートカットを割り当ててください。

背景

LazyVim に <C-Right> など Ctrl + 矢印キーを使うキーマップが設定されています。
https://github.com/LazyVim/LazyVim/blob/b9d38f692015fecaa72d55282b74a3d601e4c9fa/lua/lazyvim/plugins/extras/ui/edgy.lua#L55-L58

しかし、Neovim 上で Ctrl+ArrowKey を使用してもコマンドが実行されないため、調査しました。

調査

1. まず対象アプリケーション上で、キーに対して期待する処理が割り当てられているか確認する

Neovim での確認方法

:verbose noremap <C-Right>

(画像は folke/noice.nvim での表示)

2. アプリケーションにキーが到達しているか確認する

例えばシェルなら以下のコマンドで確認します。今回はここで入力が表示されないことから OS に入力を横取りされていることを疑いました。

$ cat -v

Ctrl+Right を入力する。)

入力が受け付けられた場合は以下が表示される。

^[[1;5C

エスケープシーケンスでなく直感的に確認するなら、Raycast など GUI キーバインド設定系で見るのもおすすめ。

入力が反映されなければ、OS など他のアプリケーションに入力されている線を疑ってください。

Discussion