如何关闭VSCode保存格式化时为换行链式函数前插入空格的功能
运行环境
- 操作系统:Windows 10
- VSCode版本:1.69.0-insider(x64,提交哈希:0e3304bca9e862eddc7e437e2bab8a4a4a4f33c9)
- 关联配置:开启Format on save(保存时自动格式化),使用VSCode默认格式化器
问题复现
手写符合个人习惯的链式调用代码:
await new VersionNumberUpdater( interval, url ) .start( () => result.next(UpdateResult.NewVersionFound) )
触发保存自动格式化后,代码会被自动调整为链式方法.start()前额外增加缩进的格式,不符合预期:
await new VersionNumberUpdater( interval, url ) .start( () => result.next(UpdateResult.NewVersionFound) );
需求为保留手写的无额外缩进格式,同时不关闭全局保存自动格式化功能。
解决方案
方法1:修改全局格式化规则(推荐,一劳永逸)
该自动缩进行为由VSCode内置JS/TS格式化器的专属规则控制,关闭对应规则即可解决问题,无需关闭保存自动格式化:
- 按快捷键
Ctrl+,打开VSCode设置面板 - 在设置搜索框分别检索以下两个配置项,取消选项前的勾选:
javascript.format.indentMemberChainOnNewline:控制JS文件内换行的链式成员调用是否自动缩进typescript.format.indentMemberChainOnNewline:控制TS文件内换行的链式成员调用是否自动缩进
如果偏好直接编辑配置文件,可打开settings.json,在配置对象中添加以下两行:
{ // 保留原有其他配置项 "javascript.format.indentMemberChainOnNewline": false, "typescript.format.indentMemberChainOnNewline": false }
配置修改完成后,按Ctrl+Shift+P调出命令面板,执行Developer: Reload Window重载窗口即可生效,后续保存文件不会再对链式调用方法自动添加额外缩进。
如果你手动设置了Prettier等第三方格式化器作为JS/TS文件的默认格式化工具,上述内置规则配置不生效,需要对应调整第三方工具的链式缩进规则。
方法2:局部忽略指定代码段格式化
如果不想修改全局格式化规则,仅需要保留个别代码段的手写格式,可使用格式化忽略标记,标记范围内的代码不会被自动调整,其余代码仍正常执行保存格式化:
// @formatter:off await new VersionNumberUpdater( interval, url ) .start( () => result.next(UpdateResult.NewVersionFound) ) // @formatter:on
注意:
@formatter:off和@formatter:on标记需要成对出现,两个标记之间的所有代码都会跳过自动格式化。
内容的提问来源于stack exchange,提问作者Ja Da
相关产品推荐
相关产品推荐

