我看到有类似的标题。但我的情况似乎有些怪异。我不知何故使用了PyCharm和Vim的混合物(在Vim中我有tabstop = 4和shiftwidth = 2),而我的Python代码似乎是un-fixabl-y borked,缩进。我第一次看到Vim的一切都是错位的,所以我重新调整了一切;但是当我运行它时,我得到一个错误,即有一个意外的缩进,即使在Vim中一切看起来完全一致。这是一个例子(这是它在Vim中的样子):
for f in files:
for line in f:
items = line.strip().split()
items = items[2:]
items = ' '.join(items).split(', ')
当我运行它时,我得到:
File "getEsSynonymLSAVectors.py", line 136
items = items[2:]
^
IndentationError: unexpected indent
我使用了PythonTidy,我使用了reindent
,我尝试了:retab
,我尝试了手动重新对齐 - 似乎没有解决这个问题。任何经验/建议将不胜感激。
答案 0 :(得分:9)
默认情况下,Python将标签视为8个空格,如果你得到缩进,你通常会想要将标签切换到空格(反之亦然,但我通常会发现空格更容易处理)。因此,请确保将vim设置为显示8个宽的空格(:set ts=8
),以查看python看到的内容。
要修复vim中的标签错误,我通常会执行以下操作,首先我需要能够看到标签,因此我启用了高亮搜索(:set hlsearch
)并搜索标签(/\t
) 。然后,我会注意需要重新拍摄的区域。接下来,我尝试为文件找到正确的vim选项卡宽度设置(:set ts=n
并改变n
,直到所有内容都很好),启用展开选项卡(:set et
),然后运行自动选项卡修复(:retab
)。当其他所有方法都失败时,请手动重新归
如果您正在使用版本控制,请确保在更改之前使用文件进行区分,并手动检查您是否因为缩进级别的无意更改而未引入错误。如果不使用版本控制,请保留备份并对文件运行diff。
答案 1 :(得分:2)
尝试这样的事情。
首先设置适当的设置。 始终使用4个空格。所以将它改为tabs = 4个空格。
首先将所有空格转换为制表符。 然后将所有选项卡转换为空格。 (我用Geany)
它曾经多次为我工作过。