在VS Code中,保存文件的快捷键,除非编辑器尚未命名
我想要一个只对已存在的文件的活动编辑器保存修改的快捷键。对于未命名标签页,它不做任何操作。
我尝试了这段代码:
{"key": "ctrl+space","command": "workbench.action.files.save", "when": "editorTextFocus && !editorUntitled"},
但在未保存的标签页上按Ctrl+Space时,它仍然会弹出保存提示。
完整版本:
版本:1.120.0 提交:0958016b2af9f09bb4257e0df4a95e2f90590f9f 日期:2026-05-12T20:17:22Z Electron:39.8.8 ElectronBuildId:13870025 Chromium:142.0.7444.265 Node.js:22.22.1 V8:14.2.231.22-electron.0 操作系统:Windows_NT x64 10.0.26200
解决方案
你的 when 条件才是问题所在,因为 editorUntitled 不是一个有效的上下文键,所以VS Code会忽略它。
请尝试:
{
"key": "ctrl+space",
"command": "workbench.action.files.save",
"when": "editorTextFocus && !editorIsUntitled"
}
备选方案1
将以下内容用于 keybindings.json
[
{
"key": "ctrl+space",
"command": "workbench.action.files.save",
"when": "resourceScheme == 'file'"
},
{
"key": "ctrl+s",
"command": "workbench.action.files.save"
}
]
备选方案2
在你的 keybindings.json 中尝试以下按键绑定:
{
"key": "ctrl+space", // whatever keybinding you want
"command": "workbench.action.files.save",
"when": "editorTextFocus && resourceScheme !== 'untitled'"
// "&& activeEditorIsDirty" doesn't seem necessary
}
现在,在未命名的文件上,这个按键绑定将不会被触发;你为 Ctrl+space 指定的其他按键绑定将会被触发。
默认情况下,它们通常会触发建议——可以通过在你的 keybindings.json 中添加以下内容来禁用该按键绑定:
{
"key": "ctrl+space",
"command": "-editor.action.triggerSuggest",
"when": "editorHasCompletionItemProvider && textInputFocus && !editorReadonly && !suggestWidgetVisible"
}
最好选择一个比 Ctrl+space 更独特的组合。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。