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

  • 本文关键字:Vim 缩进 方括号 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 宽。

在 vim 中使用此缩进脚本来缩进您的 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,
    }),               
  )

最新更新