python3和vim的缩进问题

Jer*_*mie 2 python vim ubuntu-16.04

我的python文件的一个示例是

def __init__(self, csvFile, chunksize=10000):
        self.newName = csvFile[:-4]
        import ipdb; ipdb.set_trace()
        self.csvFile=csvFile
        self.chunksize=int(chunksize)
        self.headers_without_timestamp = header_without_timestamp 

        self.total_rows = 0
        self.username=username
        self.password=password
        self.dbname="data"
Run Code Online (Sandbox Code Playgroud)

而且写得很好.

我有一个小错误,但我无法解决它.当我运行命令时python3 Final_Fast_Version_Waqar.py ~/home/Data/DCIX_OB.csv 1000 7,我得到了

  File "Final_Fast_Version_Waqar.py", line 37
    import ipdb; ipdb.set_trace()
                                ^
TabError: inconsistent use of tabs and spaces in indentation
Run Code Online (Sandbox Code Playgroud)

这是一个与vim编辑器相关的问题,我猜是因为我最近设置了一个Ubuntu服务器并安装了vim.如何修复缩进错误?

SCB*_*SCB 5

在vim中打开空白字符可能会有所帮助,看看发生了什么.

:set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:·
Run Code Online (Sandbox Code Playgroud)

您可能会看到的是混合,其中一些行使用tabs()而其他行使用space(··),这是python中不允许的.

我建议你设置你的vim配置,以便它自动将标签切换到python中的空格.也许是这样的?

autocmd Filetype python setlocal ts=4 sw=4 sts=0 expandtab
Run Code Online (Sandbox Code Playgroud)


小智 5

由于Python对缩进敏感,因此最好将编辑器配置为使用空格而不是制表符。对于vim,您可以将其添加到.vimrc

set tabstop=4
Run Code Online (Sandbox Code Playgroud)

每次键入tab时,vim都会使用4个空格代替。

另外,要修复当前文件的缩进,请键入:

:retab
Run Code Online (Sandbox Code Playgroud)