如何自动缩进在github上看起来不错但在编辑器中缩进的代码?

时间:2019-03-14 16:22:29

标签: tabs spaces

我需要在Sublime和PyCharm(大型源文件的一小部分)中编辑一段看起来像这样的代码:

enter image description here

我不确定作者使用的是哪种现代代码编辑器(以及创新的方法要求在一行中混合制表符和空格),但是他们的缩进方式在github上看起来是合理的(所以我猜所有团队成员都在使用)是Atom吗?)-我检查了一下,页面源代码仍然包含\t符号。

enter image description here

python -m py_compile命令似乎对此代码很满意,因此我尝试用8 spaces替换制表符,看上去还是很可怕。尝试用“固定数量”的空格替换这些空格也没有用,包括5个可能是数字或&nbsp浏览器应该使用的空格)。我检查过该文件没有CRLF结尾。

我尝试使用内部使用Python 2.7 AST的formatter,它表示缩进是错误的,因此仍然没有运气。

我试图在制表符数量和假定的空格数量后面寻找一些逻辑,导致了以下发现:

2 spaces + tab + 4 spaces => 12 spaces
sstssss ->
ssssssssssss (12 spaces) => t = 6 spaces
example
        for |<- these pipes should be one on top of the other
        |correct_t

sst ->
ssssssss (8 spaces) => t = 6 spaces
example
        |writer.add_scalar('eval/acc', acc, epoch)
    |if acc >= best_acc:

but

ssstsssss ->
sssssssssssss (13 spaces) => t = 5 spaces

         |best_acc = acc
             |model.save_networks('best'+str(epoch))

1 个答案:

答案 0 :(得分:0)

哦,我想出了解决方案!我将制表符宽度设置为8个空格,然后按预期方式工作,即,不是将每个<fieldset> <legend>Personalia:</legend> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> </fieldset> <fieldset> <legend>Personalia:</legend> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> </fieldset> <fieldset> <legend>Personalia:</legend> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> </fieldset> <fieldset> <legend>Personalia:</legend> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> </fieldset> <fieldset> <legend>Personalia:</legend> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> <input type='text' value='1'> </fieldset>替换为8个空格,而是将它们“制表”为最多8个空格!

在Linux中,人们可以通过\t做同样的事情。

enter image description here