带括号和括号的Vim缩进级别

时间:2012-05-12 08:40:58

标签: python vim

当我使用gg=G重新引用文件时,我注意到右括号或括号的缩进与开头的行不匹配。例如(前导标签显示为> ...)

if settings.DEBUG:
>...urlpatterns += patterns('',
>...>...url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
>...>...>...'document_root': settings.MEDIA_ROOT,
>...>...}),
>...)

我想修复包含此内容的文件中的缩进。对于python,我将softtabstop设置为4,shiftwidth设置为4并设置expandtab。当我gg=G时,它产生了以下结果:

if settings.DEBUG:
    urlpatterns += patterns('',
            url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
                'document_root': settings.MEDIA_ROOT,
                }),
            )

我在这里遇到两个问题。第一个是结束括号与其左括号的空白级别不匹配,它们缩进到与括号内的代码相同的级别。第二行中的(及其最后一行中的匹配)以及第三行中的{及其匹配的}都可以看到这种情况。第五行。我希望如此,结束括号与它们的左括号相同。

我的第二个问题是,左括号后的缩进是新块的缩进的两倍,甚至是打开{后的缩进。我认为这可能是Python文件类型缩进的一部分,但我想知道如何阻止它,所以所有的缩进都是4宽。

1 个答案:

答案 0 :(得分:6)

在vim中使用this缩进脚本来缩进python文件。它执行PEP-0008中建议的操作。你发布的代码,用脚本缩进给我这个:

if settings.DEBUG:
  urlpatterns += patterns('',
                          url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
                            'document_root': settings.MEDIA_ROOT,
                          }),
                         )

建议您提出第二个问题:

  

延续线应垂直对齐包装元素,使用Python的隐含线连接括号,括号和大括号,或使用悬挂缩进。使用悬挂式缩进时,应采用以下注意事项;第一行应该没有参数,应该使用进一步的缩进来明确区分自己作为延续线。

因此缩进脚本正在做正确的事。

此外,如果第一行没有任何参数,建议使用您想要的缩进类型。因此重新排列代码并使用缩进脚本给出:

if settings.DEBUG:
  urlpatterns += patterns(
    '',
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
      'document_root': settings.MEDIA_ROOT,
    }),               
  )
相关问题