vscode Trim Trailing Whitespace在autoSave时不会修剪光标前的空白字符,

i7uaboj4  于 6个月前  发布在  Vscode
关注(0)|答案(6)|浏览(51)

类型:Bug

  1. 设置设置 "files.trimTrailingWhitespace": true"files.autoSave": "afterDelay"
  2. 打开一个(JS)文件。
  3. 在任何行的末尾留一些空格,并将光标放在行尾。
  4. 等待一会儿,以便文件自动保存。
  5. 在磁盘上检查文件 - 在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实验
5n0oy7gb

5n0oy7gb1#

感谢您提出这个问题!看起来您可能正在使用旧版本的VS Code,最新稳定版本是1.74.3。请尝试升级到最新版本并检查此问题是否仍然存在。
快乐编码!

h43kikqp

h43kikqp2#

嘿,Bot,感谢提醒,我已经升级到1.74.3版本,但问题仍然存在。这是一个长期存在的问题,我至少已经体验了一年或更长时间。

voj3qocg

voj3qocg3#

@xmedeko 我更喜欢现有的行为。我经常需要停下来思考我的下一个输入是什么,所以我不想让自动保存不断撤销我正在进行的输入。尤其是像缩进这样的东西。
我遇到了这个问题,因为我如果使用实时共享功能,我的同事就会得到你描述的那种行为,这对他们来说非常不直观。

4xrmg8kj

4xrmg8kj4#

@ryanhiebert autosavetrimTrailingWhitespace 正在改变你已经输入的内容 - 在某些情况下可能会令人困惑。关于你描述的情况,是的,我想保持光标位置,所以我提出了(请参阅我的第一条帖子):
解决方案是在保存的文件中删除光标前的空白(但保留在编辑器中)。

zi8p0yeb

zi8p0yeb5#

我明白了。你的建议可以解决一个问题,但这意味着文件中的内容与磁盘上的内容不同,这是一个奇怪的保存方式。我预计在没有进行更多主要工作的情况下,他们会考虑文件已脏,即使他们刚刚自动保存了它,并且没有发生任何活动,这可能会导致保存循环竞争。
autosavetrimTrailingWhitespace 已经改变了你正在输入的内容 - 在某些情况下可能会令人困惑。
我很好奇你的意思是什么。从我所了解的,它并没有改变当前行,这是对用户最令人沮丧的部分。
此外,你提到空白字符“已提交”,但我认为你只是指“已保存”?经常使用git,我不担心我的当前行的空白字符会被自动保存。我会切换到另一行,然后一切都会好起来。我不想让提交有这个问题,但是一个明确的保存(仅在这种情况下才发生自动格式化,例如,所以我仍然经常使用明确的保存来触发自动格式化)也会从你的当前行中删除尾随的空白字符。因此,这很大程度上只是在自动保存下的行为,手动保存将清理您可能遇到的任何残留问题。

wztqucjr

wztqucjr6#

当你依赖自动保存功能时,你不想进行任何显式的保存操作,这会很不方便。这个问题在我们的团队中确实存在,因为git提交的是文件中保存的内容(对于JS代码,我们通过eslint和CI构建警告来解决这个问题,但这也不是非常方便)。

我不太了解VS Code的内部机制,但从用户的Angular 来看,当一个文件没有尾随空格被保存时,不会有冲突,但编辑器中仍然保留一个尾随空格,而内部编辑器状态将显示为“未修改”。

我认为我们已经充分描述了用户的观点,现在就看VS Code团队如何评估对VS Code代码可能产生的影响并做出相应的更改了。

一个当前的不一致行为示例:光标位置有缩进。

  1. 快速按Enter键几次,然后快速按↑和↓。此时你在最后一行,有缩进。
  2. 返回(撤销)。快速按Enter键几次,然后快速按↑,等待片刻,再按↓。此时你在最后一行,无缩进,即列0。

所以,结果取决于“时机”,即你的"files.autoSave": "afterDelay"设置以及你输入的速度。但我不介意这样的小不一致。对我来说,更重要的是让所有尾随空格都被修剪(在自动)保存的文件中。

相关问题