Deepseek ArtifactsDeepseek Artifacts
键盘自定义 · 已更新至 v2.1.288

Claude Code 键位定制:改键、Vim 模式与快捷键大全

这份指南讲透 Claude Code 里所有改键盘行为的方式:编辑 keybindings.json、用 /vim 或 /config 打开 vim 模式,再顺手记牢那些真正常用的默认快捷键。

速览

  • 键位配置放在 ~/.claude/keybindings.json——输入 /keybindings 即可创建并打开,保存后立即生效,不用重启。
  • 按键绑定按 context 分组(Chat、Autocomplete、Agents、Scroll 等),把 "ctrl+e" 这类键映射到 chat:externalEditor 这类 action;把键设为 null 即可解绑。
  • Vim 模式:直接跑 /vim,或者走 /config → Editor mode → 空格 → 回车。Escape 在 INSERT/NORMAL 间切换;v2.1.118 起还支持 visual mode(v/V)。
  • 有些键动不了:Ctrl+C、Ctrl+D、Ctrl+M 属于保留键,无法重绑;tmux 的 Ctrl+B 前缀更是会在 Claude Code 收到之前就把快捷键截走。

How to Enable Vim Editor in Claude Code CLI

频道:ProgrammingKnowledge21:32

打开

Claude Code v2.1.118 — Vim Visual Mode & Custom Themes

频道:Claude Code Updates0:41

打开

How to use Vim in Claude Code

频道:HAMY LABS5:41

打开

Claude Code release notes — v2.1.118 & v2.1.288

更新日志:github.com/anthropics/claude-code

打开

Keybindings — official documentation

官方文档:code.claude.com/docs

打开

本页事实均与官方 keybindings 文档以及 v2.1.118、v2.1.288 两条更新日志交叉核对;截图取自上面列出的视频。所述行为对应 Claude Code v2.1.288(2026 年 10 月)。

截图均为上述视频的画面帧,注明出处,且每一步都带回到原始时间点的链接。

改键与开启 vim 模式的完整步骤

在 keybindings.json 里改键

  1. 1

    启动 Claude Code,确认环境

    在终端里运行 claude 进入会话。改键和 vim 模式都是 CLI 能力,本页所有操作都在同一个提示符里完成。v2.1.288 及以上版本还带来了 agents 视图的新快捷键:Ctrl+F 搜索、Alt+↑/↓ 在分组之间跳转。

    Claude Code welcome screen in a Windows PowerShell terminal showing the session banner and an empty prompt before any keybindings are customized
    一个全新的 Claude Code 会话,随时可以开始定制。看视频 0:17 处
  2. 2

    用 /keybindings 打开 keybindings.json

    在提示符里输入 /keybindings。如果 ~/.claude/keybindings.json 还不存在,Claude Code 会先创建这个文件,再用编辑器打开。保存的修改会被自动检测,完全不用重启。

    Claude Code slash command menu filtering the command list after a forward slash is typed into the input box
    斜杠菜单会随着输入过滤——/keybindings 就是其中一项。看视频 0:34 处
  3. 3

    在 context 里把键映射到 action

    文件里是一个按 context 分组的 bindings 数组——Chat、Autocomplete、Agents、Task、Scroll 等等。每个块把一个键映射到一个 action 名:undefined }。在文件开头加上 $schema 字段,编辑器就能自动补全所有 action 名。

  4. 4

    用 null 解绑,用和弦键串联

    把某个键设为 null 即可关掉默认行为——"ctrl+s": null 会禁用输入暂存。和弦键用空格分隔,"ctrl+x ctrl+k" 表示先按 Ctrl+X,三秒内再按 Ctrl+K。少数组合是保留键,无法重绑:Ctrl+C、Ctrl+D、Ctrl+M、Ctrl+[ 和 Ctrl+I。

打开 vim 模式

  1. 5

    用 /config 打开设置面板

    不想手改 JSON?/config 会打开演示视频里的那个设置面板:Status、Config、Usage 三个标签页,加一个随输入即时过滤的搜索框。

    Claude Code /config settings panel listing Auto-compact, Todo list, Editor mode and Theme options in the terminal
    /config 面板列出所有设置项,包括 Editor mode。看视频 0:40 处
  2. 6

    搜索定位到 Editor mode

    在搜索框里输入 edit,列表立刻收窄到 Editor mode 这一项。默认值是 normal——也就是 readline 风格的编辑方式,用惯 bash 或 Emacs 键位的人会很熟悉。

    Claude Code config search filtered to the Editor mode setting showing its default normal value
    Editor mode 默认是 normal,按空格即可切换。看视频 1:08 处
  3. 7

    按空格切到 vim

    选中 Editor mode 这一行后按空格——取值立刻从 normal 变成 vim。底部提示行写明了操作:Space 修改、Enter 保存、/ 搜索、Esc 取消。

    Claude Code Editor mode setting switched from normal to vim in the /config panel
    一个空格就能选中 vim。看视频 1:11 处
  4. 8

    回车保存,认准 -- INSERT --

    按 Enter 保存。Claude Code 会输出 "Set editor mode to vim",状态栏随之出现 vim 的 -- INSERT -- 标记。这个选择在同一台机器上跨会话保持——它以 editorMode 的形式存在 ~/.claude.json 里。那是运行时文件,还存着 OAuth 缓存和会话状态,别想着把它软链进 dotfiles。

    Claude Code confirming Set editor mode to vim with the vim INSERT mode indicator in the footer
    保存成功——页脚出现了 vim 的 -- INSERT -- 标记。看视频 1:28 处
  5. 9

    insert 模式打字,normal 模式指挥

    insert 模式就是普通打字。按 Escape 进入 normal 模式:h、j、k、l 移动光标,b 和 w 在词间跳转,d 删除、c 修改、r 替换。再跑一次 /vim 就能整体关掉 vim 模式。vim 自己的键位不走 keybindings.json——想改 INSERT 模式里的序列(比如 jj 退回 normal),要用 vimInsertModeRemaps。

  6. 10

    用 visual mode 选中文本(v2.1.118+)

    不少老教程说 Claude Code 没有 visual mode——那已经过时了。v2.1.118 带来了 visual mode(v)和 visual-line mode(V),支持选区、操作符和可视化反馈:v 加 motion 按字符选择,V 加 motion 按行选择,然后用 d、y 或 c 处理选区。

    Claude Code v2.1.118 release note card listing the vim visual mode commands v plus motion and V plus motion
    v2.1.118 给 Claude Code 的 vim 模式补上了 v 和 V 选区。看视频 0:16 处

值得背下来的默认快捷键

  1. 11

    记牢最常用的默认快捷键

    Shift+Tab 循环切换权限模式,Enter 提交,Ctrl+J 换行,Ctrl+L 清空输入,Ctrl+R 搜历史,Ctrl+O 切换 transcript,Ctrl+T 看待办,Ctrl+B 把任务转后台,Ctrl+X Ctrl+K 终止 agents。v2.1.288 起,agents 视图里 Ctrl+F 按名称找会话、Alt+↑/↓ 在分组间跳转——这些通通都能在 keybindings.json 里改。

keybindings.json、/config、/vim:各管什么

Claude Code 里有三层机制决定按键行为。它们是叠加关系而非互斥——想清楚要改什么,再选对应的那层。

  • 1keybindings.json 改单个 action:把 chat:externalEditor 挪到 ctrl+e、解绑 chat:stash、加一组 ctrl+x 和弦。粒度最细,可以进版本库。
  • 2/config → Editor mode 切换整套编辑模型,在 normal(readline)和 vim 之间二选一。一次切换、立即保存,对这台机器之后的每个会话都生效。
  • 3/vim 的效果和 Editor mode 开关完全一样——只是最快的一条路,也是 HAMY LABS 教程里用的命令。再跑一次就切回 normal。
  • 4有些键根本到不了 Claude Code:tmux 的 Ctrl+B 前缀、GNU screen 的 Ctrl+A、会挂起进程的 Ctrl+Z,都在终端层就被截走了。这类问题去终端里解决,别改 keybindings.json。
  • 5进了 vim 模式,vimInsertModeRemaps 是改 vim 行为(比如 jj 映射 escape)的唯一途径——keybindings.json 刻意不碰 vim 内部键位。

经验法则:讨厌某一个快捷键 → keybindings.json;想换整套编辑手感 → vim 模式;某个键毫无反应 → 先查终端。

改键不生效?按顺序排查

绝大多数键位问题都逃不出下面五种原因。动手改文件之前,先按顺序过一遍。

  • 1改了没反应:先确认文件是 ~/.claude/keybindings.json(不是 settings.json),再确认 JSON 能正常解析。用 --debug 启动 Claude Code,可以看到 action 拼错、context 不存在之类的绑定警告。
  • 2某个键拒绝重绑:Ctrl+C、Ctrl+D、Ctrl+M(永远等于 Enter)、Ctrl+[(永远等于 Escape)、Ctrl+I(永远等于 Tab)是保留键。文本框里输入的可打印字符会直接进输入框,不触发绑定。
  • 3Ctrl+B 或 Ctrl+A 毫无动静:tmux 和 GNU screen 把它们当成自己的前缀吃掉了。要么在 keybindings.json 里换一个键,要么改多路复用器的前缀。
  • 4复用和弦前缀失败:如果 ctrl+x 开头有好几组和弦,必须把所有 ctrl+x 和弦全部解绑,ctrl+x 才能当普通单键用。
  • 5vim 的键不理会你的绑定:这是设计如此——vim 模式自己管自己的键。insert 序列用 vimInsertModeRemaps;如果 v 或 V 选区毫无反应,先把 Claude Code 升级到 v2.1.118+。

想恢复任何默认值,把对应那行从 keybindings.json 里删掉即可——是「删除」而不是「写回默认值」让原始绑定回来。

Claude Code 键位常见问题

更多 Claude Code 攻略