python-indent
私は3から4に変更mark-whole-buffer
しindent-for-tab-command
ました。それは私にゴミを与えました。
6 に答える
機能がありindent-region
ます。したがって、バッファ全体にマークを付けてから、M-x
と入力してみindent-region
ます。C-M-\
私の知る限り、それは通常、にバインドされています。
編集
変更に対して再インデントは機能しませんtab-width
。コメントに書いたように、スペースをタブに変更してから変更するのtab-width
が解決策です。
「タブではなくスペースでインデントしていると推測すると、最初に3に設定しtabify
てバッファの内容を処理しますtab-width
。次にtab-width
、4に変更して実行しますuntabify
。」
これは一種のハックですが、あなたに与えているゴミをあなたに与えることindent-region
はありません
1)スペースとしてのタブが4スペースに設定されていることを確認してください。スクラッチバッファタイプの場合:
(setq tab-width 4)
そして、それをマークして使用することによってそれを評価しますM-x eval-region
2)3つのスペースのすべてのセットをタブ文字でグローバルに置き換えます
M-x replace-regexp [SPC][SPC][SPC][RET] C-q[TAB][RET]
3)バッファ全体を強調表示し、タブを解除します
M-x mark-whole-buffer M-x untabify
これにより、すべてのタブが4つのスペースに変換されます。
indent-region
代わりにバッファで試してください。当初はC-M-\
これはちょっとしたハックですが、「MX replace-string」、「」->「」への簡単な回避策として機能しました。次に、emacsがファイルに対して自動ID検出を行う場合は、閉じてから再度開く必要があります。次に、複数行のコード(タブ付き)と、スペースがたくさんある文字列を調べて修正する必要があります。
これも役立つかもしれません:
http://www.emacswiki.org/emacs/IndentingPython
特に、PythonTidyは、小さな問題を伴う厄介なコードの再構築に非常に効果的です(残念ながら、ツールの構成は簡単ではありません)。
http://www.emacswiki.org/emacs/PythonProgrammingInEmacs#toc17
役に立たないか、テーマごとではないかもしれませんが、私はそのようなスクリプトを使用しています。コマンドラインから実行します。(python reindent.py some.py)
string_equalとreplace_toを変更します。
import sys
file_name = sys.argv[1]
string_equal = " "
replace_to = " "
with open(file_name) as f:
data = f.readlines()
f.close()
def create_new_line(i):
new_line = ""
flag = True
cur_s = ""
for k in i:
if flag and k == " ":
cur_s += k
if cur_s == string_equal:
new_line += replace_to
cur_s = ""
else:
flag = False
new_line += k
return new_line
with open(file_name, "w") as f:
for i in data:
l = create_new_line(i)
f.write(l)
f.close()