在VS Code中将格式化制表符转换为空格

9
在有人试图将此问题标记为重复之前,请仔细阅读问题。我看到类似的问题被问过(并且被错误地回答了)。
我正在使用Visual Studio Code。我的代码在一行中使用制表符来格式化列,而不仅仅是在开头。我正在尝试将这些制表符转换为适当数量的空格以保持列。但是我未能成功。
在您建议使用ctrl-shift-I之前,请注意它只适用于前导制表符,而不是行内制表符。另外,请不要建议"Untabify"或类似的插件。这些插件只会将每个制表符转换为4个(或多少)空格,而不确定保持制表位置需要多少空格。
Visual Studio 2008有一个"untabify"功能,可以完全做到我想要的效果。但似乎没有被带到VSCode中。
谢谢, Greg

他们是使用 '\t' 还是实际按下 Tab 键进行可视对齐的? - sweenish
这是实际的制表符(\t),就像当编辑器设置为在按下制表键时插入制表符。这实际上是我的首选设置,因为它使代码格式化更加清晰,但遗憾的是这个组织想要所有空格,而且我有很多旧代码两种方法都有。 - Greg
如果VS提供了你想要的,为什么不把代码放进去呢?你描述的听起来对我来说很奇怪。即使是在一行内的制表符,它们也应该是相同的大小,而且VS Code可以将所有制表符替换为空格,我相信你已经看到了。如果它们真的需要是可变的,那听起来就像是一个不好的做法,你需要重构代码。或者至少通过clang-format运行它。如果是用于打印的字面上的\t,并且VS Code没有扩展程序,那么现在是时候让大兄弟介入并处理这个问题了。 - sweenish
由于我使用的是Linux,无法加载Visual Studio。选项卡用于将代码格式化为列。这是提高可读性的标准做法,甚至在一些编码标准(如BARR:2018)中也有所提及。看看Visual Studio 2008(可能还有更晚的版本)。内置菜单选项可以重新格式化代码段,将多个空格转换为适当数量的制表符,并将使用制表符对齐列的代码转换为空格。这就是我要求的所有功能。 - Greg
这条评论让人觉得 VS Code 内置的行为已经足够了。但是如果没有代码示例,我认为没有人能再帮你更多了。 - sweenish
4个回答

6

另一种不涉及扩展的解决方案:

  1. 使用命令“转换为空格缩进”将文件转换为空格缩进。它会将所有行开头的制表符更改为空格。
  2. 选择剩余的一个制表符,按下 ctrl+shift+L 以选择所有出现的制表符。
  3. 按下 tab。所有制表符都应该被正确数量的空格替换。

2

正是我所寻找的! - Greg

2
没有一个“去除制表符”扩展能够满足我的期望。使用“Shell命令编辑”扩展中的“expand”命令可以解决问题。

-1
进行正则表达式搜索,将 \t 替换为所需的空格数量?

enter image description here


3
这不是想要的。我可以轻松地进行全局搜索并将所有制表符替换为4个空格。问题在于,这会破坏列格式化的制表符停止位的整个概念。我需要的是一些东西,可以全局替换制表符字符为正确数量的空格(1、2、3或4),以保持代码沿制表符停止位对齐。这就是Visual Studio 2008中的“取消制表符缩进”命令。 - Greg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接