VSCode默认无真正“新建文件”快捷键,Ctrl+N仅建未保存的untitled标签页;需编辑keybindings.json绑定workbench.action.files.newUntitledFile并设置合理when条件(如explorerViewletVisible || editorTextFocus)才能全局生效。

VSCode 默认没有“新建文件”快捷键,得自己加
VSCode 原生不提供全局新建空白文件的快捷键(比如类似 Sublime 的 Ctrl+N),它只默认绑定 workbench.action.files.newUntitledFile —— 这个命令创建的是“未命名文本文件”,且**只在编辑器焦点下生效**。如果你按 Ctrl+N 没反应,不是坏了,是根本没绑定,或者 when 条件不满足。
用 keybindings.json 添加真正可用的“新建文件”快捷键
GUI 界面(Ctrl+K Ctrl+S)只能改已有绑定,无法添加原生不存在的快捷键;必须编辑 keybindings.json 才能新增。操作步骤如下:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Preferences: Open Keyboard Shortcuts (JSON)并回车 - 确保文件内容是 JSON 数组格式(以
[...]包裹),不要删掉方括号 - 在数组内添加一条新规则,例如:
[
{
"key": "ctrl+n",
"command": "workbench.action.files.newUntitledFile",
"when": "explorerViewletVisible || editorTextFocus"
}
]
这里关键点:
-
"when": "explorerViewletVisible || editorTextFocus"让它在资源管理器展开时、或编辑器有焦点时都能触发,否则按了没反应 - 别写
"when": "true"—— VSCode 不认这个写法,得用布尔表达式 - 如果想让快捷键在任意界面都生效(包括终端、搜索框),可改用
"when": "textInputFocus || explorerViewletVisible || editorTextFocus"
为什么你设了 Ctrl+N 却弹出系统新建窗口或没反应
常见原因不是配置错,而是被外部程序劫持或键盘布局干扰:
- 搜狗拼音、微软输入法、Logitech Options、Raycast 等常拦截
Ctrl+N,临时退出它们再试 - 非美式键盘(如中文、德语)下,
Ctrl+N可能被识别为Ctrl+ñ或其他字符,导致匹配失败 - 解决办法:打开
settings.json(不是keybindings.json),加这一行:"keyboard.dispatch": "keyCode" - 插件冲突:GitLens、Vim 扩展等可能重绑
Ctrl+N,在Ctrl+K Ctrl+S搜索ctrl+n,看“来源”列是否显示 “Extension”
想在资源管理器里右键新建指定类型文件?那得靠扩展
纯 JSON 绑定只能调用内置命令,无法实现“新建 index.html”或“新建 test.py”这种带模板的操作。这类需求要依赖扩展,比如:
-
Advanced New File:支持路径补全和自定义模板,绑定快捷键后可直接输入src/utils/index.ts创建 -
Easy New File:右键资源管理器空白处,出现“New File”菜单项 - 注意:这些扩展自带的命令 ID 各不相同,例如
easynewfile.newFile,不能直接套用workbench.action.files.newUntitledFile
真正容易被忽略的点是:VSCode 的快捷键逻辑完全基于上下文条件(when),而不是“按了就执行”。哪怕命令 ID 完全正确,只要当前焦点不在允许范围内,它就静默失效——不报错、不提示、也不反馈,这是调试时最耗时间的地方。


















