2

我正在尝试学习 vim :-) 在自动缩进改变我的 python 代码的含义时遇到了一些真正的麻烦。有没有办法在不遇到像下面这样的行为的情况下获得自动缩进的好处?

我从一个 python 文件开始:

me@host:/tmp$ cat pytest.py
如果为假:
    print('从不',
          '打印这一行')

print '总是打印这一行。'

自动缩进vim pytest.py, gg=G,:wq

哦,我搞砸了我的脚本:

me@host:/tmp$ cat pytest.py
如果为假:
    print('从不',
            '打印这一行')

    print '总是打印这一行。'

试图保持这个真正的香草:

我@host:/tmp$ cat ~/.vimrc
文件类型插件
文件类型缩进
autocmd FileType python set sw=4
autocmd FileType python set ts=4
autocmd FileType python set sts=4
autocmd FileType python set textwidth=79
4

2 回答 2

4

是的,不要那样做。

VIM 中自动缩进的全部意义在于让编辑器根据语言格式规则猜测空格应该放在哪里。然而:

在此处输入图像描述

如您所知,Python 空格很重要。正如医生所说:不要那样做。

于 2011-12-14T02:09:50.860 回答
2

在 vim 中使自动缩进工作只是让你的 tabstop、shiftwidth、softtabstop 和 expandtab 设置与你正在编辑的文件一致的问题。我使用这个插件:

http://freecode.com/projects/vindect

它可以从您正在编辑的 python 文件中处理这些设置,并确保即使您碰巧编辑了另一个人的文件,该文件的空白设置与您不同。

编辑:如果您希望对 python 源文件进行完全重新缩进(以替换 gg=G),则需要一个特定于 python 的重新缩进器,如下所示: http ://svn.python.org/projects/doctools/trunk /utils/reindent.py你可以很容易地把它变成一个 vim 命令。

于 2011-12-14T09:55:04.327 回答