0

0

VSCode如何自定义键盘映射_修改快捷键有何流程【教程】

紅蓮之龍

紅蓮之龍

发布时间:2026-01-25 19:09:16

|

531人浏览过

|

来源于php中文网

原创

按 Ctrl+Shift+P 执行 Developer: Toggle Developer Tools,在 Console 中按快捷键可查看匹配命令及来源;或用 Preferences: Open Keyboard Shortcuts (JSON) + Ctrl+K Ctrl+S 搜索快捷键,通过“源”列定位 Default/Extension/User 绑定。

vscode如何自定义键盘映射_修改快捷键有何流程【教程】

快捷键冲突时怎么快速定位是哪个扩展或默认键绑定在起作用

Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+PmacOS)打开命令面板,输入并执行 Developer: Toggle Developer Tools,切换到 Console 标签页;然后在 VSCode 窗口里按下你想查的快捷键(比如 Ctrl+P),控制台会输出类似 KeybindingService#dispatch Ctrl+P 的日志,并附带当前匹配到的命令 ID 和来源(如 workbench.action.quickOpen 来自内置,或 extension.name.command 来自某扩展)。

更直接的方式是:打开命令面板 → 输入 Preferences: Open Keyboard Shortcuts (JSON),再按 Ctrl+K Ctrl+S 打开图形化快捷键界面,在右上角搜索框输入快捷键组合(如 ctrl+shift+p),结果列表会显示所有命中项及其“源”列(DefaultUserExtension)。

如何安全覆盖默认快捷键(比如把 Ctrl+Tab 改成切换编辑器组而非切换标签页)

VSCode 的快捷键优先级是:用户定义 > 扩展贡献 > 默认内置。只要在用户键映射中明确写出新绑定,就会生效。

操作步骤:

  • 打开命令面板 → 执行 Preferences: Open Keyboard Shortcuts (JSON)
  • 在打开的 keybindings.json 文件中添加对象,注意用 key 指定按键组合,command 指定目标命令,when(可选)限定触发上下文
  • 例如想让 Ctrl+Tab 切换编辑器组(而非默认的“最近打开的编辑器”),写入:
[
  {
    "key": "ctrl+tab",
    "command": "workbench.action.quickOpenPreviousEditorInGroup",
    "when": "editorTextFocus"
  }
]

⚠️ 注意:workbench.action.quickOpenPreviousEditorInGroup 是切换组内上一个编辑器,若要循环切换整个编辑器组,应改用 workbench.action.previousEditorInGroup;另外,原生 Ctrl+Tab 行为受 workbench.editor.focusRecentEditorAfterClose 设置影响,建议同步检查该配置是否干扰预期。

为什么改了 keybindings.json 却没生效?常见失效原因

不是语法错误就是上下文冲突。

典型问题包括:

AssemblyAI
AssemblyAI

转录和理解语音的AI模型

下载
  • key 值格式不对:必须用小写英文加 + 连接,如 "ctrl+alt+o",不能写成 "Ctrl+Alt+O""CTRL+ALT+O"
  • 命令名拼错或已弃用:比如把 editor.action.formatDocument 写成 editor.formatDocument,VSCode 不报错但不执行
  • when 条件太严格:例如写了 "when": "editorTextFocus && !editorReadonly",但在终端面板按快捷键就自然失效
  • 多个绑定冲突且未设 when 排他:VSCode 会执行第一个匹配项,后写的未必覆盖前写的
  • 扩展自带键绑定被禁用:某些扩展(如 Vim、Emacs Mode)会接管全部快捷键逻辑,此时需先禁用其键绑定,或在 when 中排除其上下文(如 !vim.mode

想让快捷键只在特定语言下生效(比如仅在 Python 文件里 Ctrl+/ 注释代码)

when 表达式配合语言标识符实现,不是靠文件后缀判断。

关键点:

  • VSCode 为每种语言分配唯一 languageId,Python 是 python,TypeScript 是 typescript,YAML 是 yaml —— 全部小写无点号
  • 使用 editorLangId == 'python' 作为 when 条件
  • 如果同时要求光标在编辑器中且非只读,组合写成:editorTextFocus && editorLangId == 'python' && !editorReadonly
  • 示例:让 Ctrl+/ 在 Python 文件中调用 editor.action.blockComment(块注释),其他语言保持默认行注释:
[
  {
    "key": "ctrl+/",
    "command": "editor.action.blockComment",
    "when": "editorTextFocus && editorLangId == 'python'"
  }
]

⚠️ 注意:这个覆盖不会禁用原生 Ctrl+/,只是新增一条更高优先级的规则;若想彻底替换所有语言的行为,需额外加一条通用绑定并设更低优先级条件(如 !editorLangId),但通常不推荐,容易混乱。 实际改键最麻烦的从来不是写 JSON,而是搞清那个“本该触发却静默失败”的快捷键,到底卡在哪一层上下文判断里。多看 when 字段、多试 Ctrl+Shift+P 里的实时搜索,比反复重启 VSCode 有用得多。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

49

2026.02.13

TypeScript全栈项目架构与接口规范设计
TypeScript全栈项目架构与接口规范设计

本专题面向全栈开发者,系统讲解基于 TypeScript 构建前后端统一技术栈的工程化实践。内容涵盖项目分层设计、接口协议规范、类型共享机制、错误码体系设计、接口自动化生成与文档维护方案。通过完整项目示例,帮助开发者构建结构清晰、类型安全、易维护的现代全栈应用架构。

196

2026.02.25

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

59

2026.03.13

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

457

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

549

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

82

2025.09.10

mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

213

2023.12.04

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.7万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号