如何最小化VSCode对C代码的格式化,使其接近Notepad++?
直接通过以下设置关闭所有自动干扰,保留纯手动编辑的自由度:
1. 彻底关闭自动格式化
打开VSCode设置(快捷键Ctrl+,),搜索并修改以下选项:
- 将
editor.formatOnType、editor.formatOnPaste、editor.formatOnSave全部设为false - 找到C/C++扩展的设置,将
C_Cpp.formatting.provider设为none,完全禁用C代码的格式化引擎
2. 锁定缩进行为,避免自动修改
- 设置
editor.autoIndent为none,让编辑器完全不干预缩进 - 关闭
editor.detectIndentation,然后根据你的习惯设置:editor.insertSpaces: true(用空格缩进)或 false(用制表符)editor.tabSize: 4(或你习惯的缩进宽度)
3. 关闭多余的智能辅助功能
- 将
editor.wordBasedSuggestions、editor.acceptSuggestionOnEnter设为false,避免自动补全干扰手动输入 - 若完全不需要智能提示,可将C/C++扩展的
C_Cpp.intelliSenseEngine设为Disabled
4. PlatformIO专属调整
在项目根目录的 platformio.ini 文件中添加一行:
platformio_ide.disable_auto_format = true
同时在PlatformIO扩展设置里,关闭所有带"Auto Format"字样的选项。
完成以上设置后,VSCode就会像Notepad++一样,完全尊重你手动输入的代码结构,不会随意改动注释、空行或缩进,仅保留基础的文本编辑功能。如果偶尔需要格式化代码,可选中内容后按 Shift+Alt+F 手动触发。
VSCode是一款不错的代码编辑器,但在我看来它只有两种状态:1. 对代码格式化过度激进;2. 完全忽略代码排版逻辑。
在使用PlatformIO编辑单片机项目的C代码时,它总是随意改动代码:自动对齐注释(我并未要求)、删除多余空行(我会在完成后自行处理)、有时将下一行内容合并到当前行末尾,粘贴未以分号结尾的代码时,后续整页代码都会被缩进(这到底是怎么想的?!)。我现在已经习惯在粘贴文本、按回车键后按Ctrl+Z撤销操作。
禁用输入/粘贴时格式化后,如果不使用{},按下回车键后if语句的下一行甚至不会自动缩进。这时候我倒不如用Windows记事本,或者Notepad++——它没有高级代码格式化功能,但对所有类C语言的编辑体验都很好。
VSCode对JavaScript代码的格式化没那么烦人,其他语言(PHP、Python、HTML)的情况我记不清了。我找到了大量C代码格式化的设置,但要么缺少所需选项、找不到对应设置,要么设置后毫无效果。我感觉VSCode开发者有非常严格的编码风格准则且不愿变通,他们的编辑风格复杂且陌生,我从未接触过。我只是手动输入代码,不使用自动补全,因此在完成代码行之前,代码自然会处于无效或不完整状态。如果编辑器无法处理这种情况,最好不要随意改动代码。
我该如何配置VSCode,使其在编辑C代码时更像Notepad++,而不用切换到Notepad++?
(我原本没想到要在Stack Overflow上提问,但VSCode推荐了这个平台,我找不到其他论坛类社区,它们的GitHub讨论区仅针对扩展开发。)
内容的提问来源于stack exchange,提问作者ygoe

