当我使用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,
}),
)