[小ネタ] coder/claudecode.nvim を使う時にフォーカスをスムーズに動かしたい
こんにちは。ダイの大冒険エンジョイ勢のbun913と申します。
普段はソフトウェア開発やテストについてZennで記事の執筆をしているのですが、本日はNeovimのプラグインに関する小ネタを紹介いたします。
coder/claudecode.nvim
以下の記事にあるように、coder/claudecode.nvimはNeovimで Claude Code を利用する上でとても便利なプラグインです。
以下のように、Neovimと統合させるような形でさながら VS Code などのエディタを利用しているように Claude Code を利用できます。
Claude Code を開いている時に Window の移動がうまくできない
以下の Issue にあるように、 :Claude
コマンドなどで Claude Code にフォーカスを当てている時に、Esc を何度か押下しなければVimで設定しているウィンドウ間の移動ショートカットがうまく動作しません。
例えば私の場合 Ctrl+l
を以下のように設定しています。
-- Ctrl+h などでウィンドウ間のフォーカスを移動できるようにしている
vim.keymap.set('n', '<C-h>', '<C-w><C-h>', { desc = 'Move focus to the left window' })
vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right window' })
vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus to the lower window' })
vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper window' })
ですが、以下のように Claude Code 側のウィンドウでノーマルモードになっていない時に何回このショートカットを入力しても、うまくフォーカスを移動できません。
esc を数回押下して、Normal モードになった時にうまくウィンドウ間のフォーカス移動ショートカットが動作します。
このEscを3回程度押すのが地味に面倒で、私の直感に反していました。
Wezterm を使う上での解決策
Weztermの設定ファイルにて、以下のようにCtrl+h
に対して、Normalモードに戻るショートカットキーを送信してからCtrl+h
を実行するように設定しました。
local wezterm = require("wezterm")
local config = {}
if wezterm.config_builder then
config = wezterm.config_builder()
end
config.keys = {
-- Vim buffer navigation for ClaudeCode
{
key = "h",
mods = "CTRL",
action = wezterm.action.Multiple({
wezterm.action.SendKey({ key = "\\", mods = "CTRL" }),
wezterm.action.SendKey({ key = "n", mods = "CTRL" }),
-- Ctrl+h には <C-w><C-h> となるようにVim側の設定でバインドしています
wezterm.action.SendKey({ key = "h", mods = "CTRL" }),
}),
},
}
return config
これにより Claude Code 側で指示を入力中でも関係なくスムーズにウィンドウ間のフォーカスを移動できるようにしました。
この方法は上で紹介した Issue のコメントを参考にしました。
ここではWeztermの設定しか記載していませんが、SendKeyが設定できるターミナルであれば同じようなことが実現できると思います。
以上、非常に小ネタでしたが誰か一人でも困っているかもしれないと思い投稿しました。
最後まで読んでいただきありがとうございました。
Discussion