当我使用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宽。
答案 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,
}),
)