如何在现有文件中将制表符转换为空格,反之亦然

Zac*_*bey 55 visual-studio-code

除了在4个空格上进行查找替换并转换为制表符(版本0.10.2)之外,我无法弄清楚如何为我的生活做到这一点.我想不出没有特定功能的编辑器/ IDE可以做到这一点.VSCode?

Pet*_*vic 86

自修复:https://github.com/Microsoft/vscode/issues/1228以来,编辑器支持开箱即用.只需选择:

  1. F1,
  2. indentationToSpacesindentationToTabs(根据您的需要)
  3. Enter.

  • This only converts leading spaces/tabs. (8认同)
  • 对于步骤1,您还可以执行`ctrl + shift + p` (8认同)
  • 没有答案将每个制表符转换为正确的VARYING数量的空格。例如,输入此文本,然后转换:第1行:“ A \ tB”。第2行:“ ABC \ tD”。 (4认同)
  • 有没有办法对项目中的所有文件执行此操作? (3认同)

小智 25

另一种方法是单击页脚上的当前缩进(Tab/Spaces:n),这将打开缩进选项,您可以在其中选择要执行的操作. 在此输入图像描述

  • 这只会转换缩进的标签,而不是所有标签。 (4认同)

jru*_*upe 15

如果您尝试将非前导标签转换为空格(反之亦然),则可以使用正则表达式搜索和替换.

  1. 按CTRL + H.
  2. 单击.*按钮以使用正则表达式进行搜索.
  3. 要搜索选项卡,请[\t]在"查找"框中输入.
  4. 在"替换"框中输入空格并执行替换.

正则表达式模式下的搜索框: VSCode正则表达式搜索框的屏幕截图

  • 这会将每个选项卡转换为相同数量的空格,这是不正确的. (9认同)
  • 这个答案很灵活。如果您想将*连续*制表符转换为固定数量的空格并且不熟悉正则表达式,请将`[\t]`更改为`[\t]+`。 (2认同)

Der*_*ers 12

为了完善这些答案,我将添加我将每个制表符转换为 n 个空格的想法。

  1. 突出显示制表符
  2. 使用CTRL+F2选择所有出现的情况
  3. SPACEn次

这是最简单的方法(不仅仅是转换前导制表符)。

请注意,这不会将连续的制表符转换为 k 个空格。它转换每个选项卡。对于连续的选项卡,请参阅我对jrupe 的答案的评论。您将需要 VS Code 使用正则表达式查找和替换来完成此操作。


小智 7

  1. 选择替换:CTRL-H
  2. 在 Find 框中输入 Horizo​​ntal Tab:按住 ATL 并在键盘上键入 009。
  3. 在替换框中输入一个空格(或多个空格):按空格键
  4. 按 Enter 开始用空格替换制表符。

  • 这会将每个选项卡转换为相同数量的空格,这是不正确的。 (13认同)
  • 这对我来说不起作用,但我在下面发布了一个关于使用正则表达式对非前导空格/制表符执行此操作的答案。 (2认同)

小智 6

快进到 2020/2021 年,有一些扩展可以为我们提供这种转换。我只需要该功能(因此我找到了这篇文章),并搜索我发现的扩展:

  • geocode.spacecadet - 提供 TAB->SPC 和 SPC->TAB,但自 2017 年以来未更新,安装次数为 1.3k,审核次数为 3.5
  • takumii.tabspace - TAB->SPC,从 2020 年开始,1.5k 安装,无评论
  • pygc.spacetab - SPC->TAB,来自...等等,实际上是昨天!(或今天,具体取决于您的 TZ),安装 2 次,无评论

  • 为了跟进这个问题,我刚刚下载了 Takumil 的 [Tab To Space](https://marketplace.visualstudio.com/items?itemName=TakumiI.tabspace&ssr=false#review-details),它确实做到了它应该做的事情做。我不敢相信它的下载量几乎达到了 2000 次,而评分却为零。我写了一篇评论并给了它 5 颗星,因为虽然它只做了一件事,但它做得绝对完美。无论赞成票如何,这都是对OP问题最完整的答案。 (6认同)
  • 如果制表符不是新行中的前导字符,@Zach Lysobey VSCode 不会转换制表符。我想这是这个帖子中许多人的主要问题。 (2认同)