如何从 VSCode 中的“保存格式”中排除文件扩展名和语言?

Posted

技术标签:

【中文标题】如何从 VSCode 中的“保存格式”中排除文件扩展名和语言?【英文标题】:How to exclude file extensions and languages from "format on save" in VSCode? 【发布时间】:2017-12-03 12:28:24 【问题描述】:

目前在 VSCode 设置中,您可以配置保存时的格式如下:

"editor.formatOnSave": true

我想排除一些文件扩展名,例如只格式化 javascript 而不是 html 文件。

【问题讨论】:

在 Mac 上,使用 Ctrl + K Shift + S 在 Linux 上,使用 Ctrl + K S 提示:如果您安装了JS-CSS-HTML Formatter 扩展,则会自动保存independently 的editor.formatOnSave 【参考方案1】:

您可以使用language specific settings 启用它仅用于特定语言,例如JavaScript:

"[javascript]": 
    "editor.formatOnSave": true

为特定语言禁用它,您可以将全局默认值切换为true 并将其与特定语言的false 结合使用:

"editor.formatOnSave": true
"[javascript]": 
    "editor.formatOnSave": false

请注意,特定于语言的设置基于language identifiers,而不是直接基于文件扩展名。还有一个开放的功能请求也允许file extension specific settings。

如果语言 ID 不够具体,"files.associations" 可用于将具有特定扩展名和/或特定目录中的文件重新映射到另一个 ID,但这会影响语法突出显示、代码完成等. 以及。例如,这可以禁用 out 目录中 JavaScript 文件的格式设置,但它们将被视为纯文本:

"[javascript]": 
    "editor.formatOnSave": true
,
"files.associations": 
    "**/out/**/*.js": "plaintext"

【讨论】:

很好的答案。但是是否可以在特定的 python 模块或文件夹上应用格式保存??...解决方法我在它自己的 vscode 窗口中打开了这个模块。 *.in 文件设置为纯文本的一个缺点("files.associations": "*.in": "plaintext" 是它禁用代码突出显示。有什么方法可以禁用*.in 文件的格式设置,但告诉它突出显示作为某种语言?【参考方案2】:

如果你像我一样遇到这个问题,因为你被重定向是因为这个问题VSCode : disable formatting of a specific file (or extension) 说,这是重复的(我不这么认为,因为我想要它用于特定文件)并且你'正在寻找“一次性”解决方案:

VS Code 有一个快捷方式“现在”(我不知道从什么时候开始),用于在命令 workbench.action.files.saveWithoutFormatting 下不列出格式的情况下保存文件 - 默认键绑定应该是

CTRL + K CTRL + SHIFT + S 

(只需按住 CTRL,然后键入 K + SHIFT + S)。

在 OS X 上,默认键绑定是

CMD + k 然后按s

【讨论】:

不知道这个。谢谢!所以,我可以启用“FormatOnSave”,但如果我仍然想保存文件而不格式化,我按住 Ctrl 键,然后按 K + Shift + S 试了一下。太棒了! 2020 年 1 月在 linux 上是 Ctrl + k,然后是 s 很好,但是下次您进行正常保存时,它无论如何都会格式化文件。 或使用Cmd Shift P 进入快速命令并输入save .. 然后它会显示命令“保存而不格式化”。 这很奇怪,因为Ctrl+K是删除当前行,所以在保存之前你会删除一行...【参考方案3】:

在 Mac 和 Linux 上,使用 Ctrl + K S

在 Windows 上,使用 Ctrl + K Ctrl + Shift + S

查看 VS Code 键盘快捷键:Ctrl + K, Ctrl + S(是的,和上面差不多)并搜索“save without formatting”

【讨论】:

【参考方案4】:

来自 VS Code IDE 文件 -> 首选项 -> 设置 -> 文本编辑器 -> 格式化并取消选中保存时格式化文件。

【讨论】:

【参考方案5】:

我用 VSCode 弄乱了我的键盘键。一种替代方法是使用 VSCode 命令在不格式化的情况下通过执行CTRL+SHIFT+P 并执行 命令。 :)

【讨论】:

【参考方案6】:

您可以在 Vscode 中使用以下设置并使用“python.formatting.autopep8Args”来指定文件或某种模式来忽略您想要的文件。当然,假设您使用 autopep8 来格式化 python 文件,其他代码格式化程序可能有其他方式来配置它。


  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "python.formatting.autopep8Args": ["--exclude settings.py"],
  "[python]": 
    "editor.defaultFormatter": "ms-python.python",
    "editor.formatOnSave": true
  

【讨论】:

这个答案非常特定于 Python autopep8,而问题是关于通常从某种语言中排除文件(“for示例仅格式化 JavaScript 而不是 HTML 文件。").

以上是关于如何从 VSCode 中的“保存格式”中排除文件扩展名和语言?的主要内容,如果未能解决你的问题,请参考以下文章

vscode给 vue 项目 添加 eslint 验证提示遇到的细节问题

vscode保存vue文件eslint报错

vsCode中配置保存格式化代码

如何禁用从 VSCode 中的特定文件自动导入?

vscode 编写vue项目,配置,符合eslint风格,自动保存格式化

如何从 Eclipse 的标记视图中排除文件/文件夹?