类型:Bug
- 设置设置
"files.trimTrailingWhitespace": true
和"files.autoSave": "afterDelay"
。 - 打开一个(JS)文件。
- 在任何行的末尾留一些空格,并将光标放在行尾。
- 等待一会儿,以便文件自动保存。
- 在磁盘上检查文件 - 在VS Code中的光标所在的行上有尾随空格。
这在例如提交更改时会导致问题 - 尾随空格也会被提交。解决方案是删除已保存文件中的空格(但保留编辑器中的空格)。
VS Code版本:Code 1.74.2 ( e8a3071 , 2022-12-20T10:29:14.590Z)
操作系统版本:Windows_NT x64 10.0.19044
模式:
沙箱:是
系统信息
| 项目 | 值 |
| ------ | ------ |
| CPUs | Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz (8 x 1800) |
| GPU状态 | 2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: disabled_off |
| 负载(平均) | undefined |
| 内存(系统) | 11.43GB (1.98GB free) |
| 进程参数 | --disable-extensions --crash-reporter-id 2617eeda-6ec5-430e-92b5-e5ed137b5070 |
| 屏幕阅读器 | 否 |
| VM | 0% |扩展禁用A/B实验
6条答案
按热度按时间5n0oy7gb1#
感谢您提出这个问题!看起来您可能正在使用旧版本的VS Code,最新稳定版本是1.74.3。请尝试升级到最新版本并检查此问题是否仍然存在。
快乐编码!
h43kikqp2#
嘿,Bot,感谢提醒,我已经升级到1.74.3版本,但问题仍然存在。这是一个长期存在的问题,我至少已经体验了一年或更长时间。
voj3qocg3#
@xmedeko 我更喜欢现有的行为。我经常需要停下来思考我的下一个输入是什么,所以我不想让自动保存不断撤销我正在进行的输入。尤其是像缩进这样的东西。
我遇到了这个问题,因为我如果使用实时共享功能,我的同事就会得到你描述的那种行为,这对他们来说非常不直观。
4xrmg8kj4#
@ryanhiebert
autosave
和trimTrailingWhitespace
正在改变你已经输入的内容 - 在某些情况下可能会令人困惑。关于你描述的情况,是的,我想保持光标位置,所以我提出了(请参阅我的第一条帖子):解决方案是在保存的文件中删除光标前的空白(但保留在编辑器中)。
zi8p0yeb5#
我明白了。你的建议可以解决一个问题,但这意味着文件中的内容与磁盘上的内容不同,这是一个奇怪的保存方式。我预计在没有进行更多主要工作的情况下,他们会考虑文件已脏,即使他们刚刚自动保存了它,并且没有发生任何活动,这可能会导致保存循环竞争。
autosave
和trimTrailingWhitespace
已经改变了你正在输入的内容 - 在某些情况下可能会令人困惑。我很好奇你的意思是什么。从我所了解的,它并没有改变当前行,这是对用户最令人沮丧的部分。
此外,你提到空白字符“已提交”,但我认为你只是指“已保存”?经常使用git,我不担心我的当前行的空白字符会被自动保存。我会切换到另一行,然后一切都会好起来。我不想让提交有这个问题,但是一个明确的保存(仅在这种情况下才发生自动格式化,例如,所以我仍然经常使用明确的保存来触发自动格式化)也会从你的当前行中删除尾随的空白字符。因此,这很大程度上只是在自动保存下的行为,手动保存将清理您可能遇到的任何残留问题。
wztqucjr6#
当你依赖自动保存功能时,你不想进行任何显式的保存操作,这会很不方便。这个问题在我们的团队中确实存在,因为git提交的是文件中保存的内容(对于JS代码,我们通过eslint和CI构建警告来解决这个问题,但这也不是非常方便)。
我不太了解VS Code的内部机制,但从用户的Angular 来看,当一个文件没有尾随空格被保存时,不会有冲突,但编辑器中仍然保留一个尾随空格,而内部编辑器状态将显示为“未修改”。
我认为我们已经充分描述了用户的观点,现在就看VS Code团队如何评估对VS Code代码可能产生的影响并做出相应的更改了。
一个当前的不一致行为示例:光标位置有缩进。
所以,结果取决于“时机”,即你的
"files.autoSave": "afterDelay"
设置以及你输入的速度。但我不介意这样的小不一致。对我来说,更重要的是让所有尾随空格都被修剪(在自动)保存的文件中。