Skip to content

Claude Code Extra

ai.claudecode installs coder/claudecode.nvim for Claude Code CLI sessions inside Blak. It is never enabled by default, and its keymaps are registered through Blak so they appear in :BlakKeys.

-- ~/.config/blak/lua/blak/user.lua
return {
extras = {
enabled = {
"ai.claudecode",
},
},
}

Because this extra adds a plugin, run:

:BlakExtras sync
Surface Contribution
Plugin coder/claudecode.nvim
Dependency folke/snacks.nvim
Load trigger :ClaudeCode* commands
Defaults terminal.provider = "snacks"
Keymap <leader>ac toggles Claude Code
Keymap <leader>aF focuses Claude Code
Keymap <leader>ar resumes Claude Code
Keymap <leader>aC continues Claude Code
Keymap <leader>am selects a Claude model
Keymap <leader>ab adds the current buffer
Keymap <leader>as sends the visual selection
Keymap <leader>aA accepts the current diff
Keymap <leader>aD denies the current diff

The keymaps appear in :BlakKeys.

The plugin also exposes commands for less common actions:

:ClaudeCode
:ClaudeCodeFocus
:ClaudeCodeOpen
:ClaudeCodeClose
:ClaudeCodeStart
:ClaudeCodeStop
:ClaudeCodeStatus
:ClaudeCodeSelectModel
:ClaudeCodeSend
:ClaudeCodeAdd %
:ClaudeCodeTreeAdd
:ClaudeCodeDiffAccept
:ClaudeCodeDiffDeny

Claude Code options are passed through ai.claudecode:

return {
extras = {
enabled = { "ai.claudecode" },
},
ai = {
claudecode = {
log_level = "info",
terminal = {
provider = "snacks",
split_side = "right",
split_width_percentage = 0.30,
},
diff_opts = {
layout = "vertical",
},
},
},
}

Set terminal_cmd if your Claude Code CLI is installed somewhere unusual:

return {
extras = {
enabled = { "ai.claudecode" },
},
ai = {
claudecode = {
terminal_cmd = vim.fn.expand("~/.claude/local/claude"),
},
},
}

Install the Claude Code CLI, then run:

:ClaudeCode
:ClaudeCodeStatus
:BlakDoctor
:BlakExtras disable ai.claudecode
:BlakExtras sync

Restart Blak to unload the plugin from the current session.