Python缩进borked

时间:2012-03-15 11:04:19

标签: python vim indentation

我看到有类似的标题。但我的情况似乎有些怪异。我不知何故使用了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,我尝试了手动重新对齐 - 似乎没有解决这个问题。任何经验/建议将不胜感激。

2 个答案:

答案 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)

它曾经多次为我工作过。