在VS Code中,保存文件的快捷键,除非编辑器尚未命名

后端开发 2026-07-08

我想要一个只对已存在的文件的活动编辑器保存修改的快捷键。对于未命名标签页,它不做任何操作。

我尝试了这段代码:

{"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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章