如何在单个操作中将工作区中所有文件的空格和制表符缩进进行转换?

6

我该如何在单个操作中对工作区中的所有文件使用VS Code的将缩进转换为空格将缩进转换为制表符命令,而不是针对每个文件使用该命令?


有点相关但不是重复:在Linux中用制表符替换空格。并且在超级用户上:如何将多个空格替换为一个制表符 - starball
1个回答

1
如果你在UNIX系统上,你可以通过命令行来完成这个操作,使用一个修改过的版本:git ls-files | command grep -E '*.ts$' | awk '{print "expand --tabs=4 --first-only", $0, " > /tmp/e; mv /tmp/e ", $0}' | sh。这个命令会列出当前工作目录中Git仓库中跟踪的所有文件,然后过滤出扩展名为.ts的文件,并使用awkexpand命令将制表符开头的缩进替换为指定数量的空格。

要从空格转换为制表符,请使用unexpand命令。

如果你不是在使用Git仓库,可以将git ls-files替换为find -type fgit ls-files的优点是它不会触及未被跟踪的文件)。

只需根据需要更改grep过滤器中的正则表达式即可。

该命令将前导的4个空格组替换为制表符。只需将--tabs参数更改为与您的缩进所需的空格数相对应的unexpand命令即可。
如果你想用VS Code的方式来做,你可以使用rioV8的扩展:Command on All Files(我与这个扩展没有任何关联)(使用editor.action.indentationToTabseditor.action.indentationToSpaces命令)。我从这个问答中找到了这个方法:如何在VS Code中执行跨多个文件的命令?
另外还可以参考https://dev59.com/SlsX5IYBdhLWcg3wUuCa#76386322

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