如何在 VSCode 中从“保存格式”中排除一个特定文件?

Jer*_*oen 12 visual-studio-code

有一个关于抑制特定文件扩展名(语言)的问题editor.formatOnSave ,但我有一个不同的问题:如何为工作区中的一个特定文件抑制此功能?

我想以某种方式存储库中抑制它,通过注释中的配置或提示等,这样我就可以防止任何人意外地做错。我无法告诉我 20 多岁的队友总是“不格式化保存”,我自己也无法始终记住这一点。

我有一个./vscode/settings.json文件,其中包含:

"editor.formatOnSave": true,
Run Code Online (Sandbox Code Playgroud)

它对于我工作区中的所有文件都非常有效。然而,我想在我的app-routing.module.ts文件中抑制它(它是一个 Angular 项目),因为自动格式化对可读性的损害大于它的帮助。

如何禁用editor.formatOnSave一个特定文件?

当我或同事使用“保存”(CTRL + S在 Windows 上)或“全部保存”(在 Windows 上)时,不应触发该文件的CTRL + K, S自动格式设置。


我尝试过的:

  • 检查相关问题中的所有答案(例如"[javascript]": { "editor.formatOnSave": false }
  • 子文件夹中有一个.vscode/settings.json文件夹,但不支持
  • 包含/* eslint-disable prettier/prettier */在我的文件中(AFAIK prettier 是我的 TypeScript 文件格式化程序),并阅读GitHub 上这个开放的 prettier 问题
  • 创建一个.prettierignore文件并添加我的文件

这些都不起作用。


解决方法

大约两年后,我注意到,如果您将其放入// prettier-ignore文件中,它将递归地忽略下一行以及该行的“子级”所有语句。因此,如果您将其放在开头行上方@NgModule({,例如,整个班级将被忽略。

例如:

"editor.formatOnSave": true,
Run Code Online (Sandbox Code Playgroud)

结合这些.vscode/settings.json设置:

// prettier-ignore
@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [
    RouterModule
  ],
})
export class AppRoutingModule {
  nonprettymethod1() { console.log('Test'); }
  nonprettymethod2() {
    console.log('A very long line that would cause prettier to wrap it along mulitple lines as best it can.');
  }
}
Run Code Online (Sandbox Code Playgroud)

应该可以解决问题。

Dev*_*hon 2

只需使用以下命令保存您的文件:

\n
    \n
  • ControlK然后S在 Linux 和 Windows 上
  • \n
  • \xe2\x8c\x98 CommandK然后S在Mac上
  • \n
\n

  • @Jeroen 我不知道,但实际上我也对这样的功能感兴趣。 (2认同)