8

を使用してファイルを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,
                }),
            )

私がここで抱えている問題は2つあります。1つ目は、閉じ括弧が開き括弧の空白レベルと一致せず、括弧内のコードと同じレベルにインデントされていることです。これは、2行目と最後の行の一致、および3行目と5行目の一致の両方で()られ{ ます}。閉じ括弧が開き括弧と同じレベルで一致するようにしたいと思います。

私の2番目の問題は、開き括弧の後のインデントが、新しいブロックのインデントの2倍、または開いた後のインデントの2倍になること{です。これはPythonのファイル型インデントの一部である可能性があると思いますが、すべてのインデントが4幅になるように、どうすればそれを止めることができるのでしょうか。

4

1 に答える 1

6

vim でこのインデント スクリプトを使用して、Python ファイルをインデントします。PEP-0008で推奨されていることを行います。スクリプトでインデントされた、投稿したコードから、次のことがわかります。

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

2番目の問題の推奨事項は次のとおりです。

継続行は、ラップされた要素を垂直方向に配置する必要があります。Python の暗黙的な行結合を括弧、ブラケット、およびブレース内で結合するか、ぶら下げインデントを使用します。ぶら下げインデントを使用する場合は、次の考慮事項を適用する必要があります。最初の行には引数があってはならず、さらにインデントを使用して、継続行であることを明確に区別する必要があります。

したがって、インデントスクリプトは正しいことをしています。

さらに、最初の行に引数がない場合は、必要なインデントのタイプをお勧めします。したがって、コードを再配置してインデント スクリプトを使用すると、次のようになります。

if settings.DEBUG:
  urlpatterns += patterns(
    '',
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
      'document_root': settings.MEDIA_ROOT,
    }),               
  )
于 2012-05-12T08:56:42.963 に答える