web-dev-qa-db-ja.com

Eclipseでpythonファイル(pydevを使用)をインデントする

私はEclipseの初心者です。コードのすべての行をインデントし、ショートカットなどを押して開いているファイルをフォーマットしたい... CTRL + SHIFT + Fを知っています(実際にはpydevでは機能しません!!)成功せずに時間を探していました。 Eclipseでそれを行う方法はありますか? VisualStudioのCTRL + K、Dのように、すべてのソースコード行を自動的にフォーマットしてインデントしますか?

15
Saied_Delshad

私は...この質問は意味がないと思います。インデントはPythonの構文です。 IDEコードを自動インデントするのは意味がありません。まだ正しくインデントされていない場合は機能せず、IDEインデントブロックの開始位置と終了位置がわかりません。たとえば、次のようにします。

# Valid Code
for i in range(10):
  b = i

for j in range(b):
  c = j

# Also Valid Code.
for i in range(10):
  b = i

  for j in range(b):
    c = j

IDEが正しいバージョンであるか、またはあなたの意図が何であるかを知ることができる方法はありません。Pythonコードを書くつもりなら、インデントの管理方法を学ぶ必要があります。これを回避する方法はありません。IDEが魔法のようにクリーンアップし、それでも目的の結果が得られることを期待するのはかなり良いことです。非常に不可能です。

さらなる例:

# Valid Code.
outputData = []

for i in range(100):
  outputData.append(str(i))

print ''.join(outputData)

# Again, also valid code, wildly different behavior.
outputData = []

for i in range(100):
  outputData.append(str(i))

  print ''.join(outputData)

最初は文字列のリストを生成し、次に結合された結果をコンソールに1回出力します。 2つ目は引き続き文字列のリストを生成しますが、ループの各反復の累積結合結果を出力します-100個のprintステートメント。この2つは、どちらも構文的に100%正しいです。それらに問題はありません。それらのいずれかは、開発者が望んでいたものである可能性があります。 IDEはどちらが正しいかを「知る」ことができません。最初のバージョンを2番目のバージョンに非常に簡単に誤って変更する可能性があります。言語は構文としてインデントを使用するため、構成する方法はありません。 IDEこの種のフォーマットを実行します。

19
g.d.d.c

たとえば、2スペースから4スペースのインデントに変更する場合は、2スペースで[ソース]-> [スペースをタブに変換]を使用してから、[ソース]-> [タブをスペースに変換]を4スペースで使用します。

22
Demyn

言語設計のため、自動インデントはPyDevの機能ではありませんが、単純なタブでインデントできるはずです。インデントする行を選択してTabキーを押すだけです。行のインデントを解除する場合は、Shift + Tabを押す必要があります。それで全部です。

16
wagnerpeer

それははるかに簡単です:

  1. 複数の行を選択
  2. Tabキーを押してインデント(右に移動)し、Shift + Tabキーを押して選択したすべての行のインデントを解除(左に移動)します。
13
fivef

インデントは構文的に重要です。の違いを考慮してください

for i in range(5):
    print i
print "done"

そして

for i in range(5):
    print i
    print "done"

ただし、IDEが既存のインデントを正規化できることは確かに理にかなっています(たとえば、各レベルで一定数のスペース/タブを適用します)。

現在、PyDevはそのような機能をサポートしていません。 Pydevの作者であるFabiozは、ある時点で 将来追加することに関心を示し、今のところ、提供されているreindent.pyスクリプトを使用して追加できることを示しました

4
rakslice

明らかにこれはPydev専用ですが、非常に便利な関数「右シフト」と「左シフト」(デフォルトではCTRL + ALT +とCTRL + ALT +にマップされています)を使用できるようになりました。キーバインドを「PydevView」から「PydevEditorScope」に変更します。これにより、選択したすべての行を必要なだけ効果的にインデント/インデントします。

2
jjisnow

PyDevではソースフォーマットがまだ利用できないようです。

1回限りのインスタンスでは、このWebアプリがうまく機能することがわかりました。

http://pythoniter.appspot.com/

1
someuser

行を選択して右クリックし、右にシフト/左にシフトすることもできます

1
reggie

あなたが探しているのは、選択したコードを一度に識別できるようにするためのEclipse/PyDevのある種のショートカットだと思います。コードブロックの上に新しい「if」または「for」ループを作成してから、IDを再配置する必要がある場合と同じです。 IDLEエディターには、まさにそのように機能する「Ctrl +]」ショートカットがあります。私の知る限り、EclipseのPyDevにはそのようなものがないようです。

1
jonathan.hepp

前述のように、pythonはコードをインデントする必要があるため、メソッドに引数として渡される変数間のスペースなど、ctrl+shift+fを使用してコードをフォーマットできます。これはJavaで使用されているもので、pydevで試し、いくつかのフォーマットを行います。

0
InvincibleWolf