6

python-indent私は3から4に変更mark-whole-bufferindent-for-tab-commandました。それは私にゴミを与えました。

4

6 に答える 6

6

機能がありindent-regionます。したがって、バッファ全体にマークを付けてから、M-xと入力してみindent-regionます。C-M-\私の知る限り、それは通常、にバインドされています。

編集

変更に対して再インデントは機能しませんtab-width。コメントに書いたように、スペースをタブに変更してから変更するのtab-widthが解決策です。

「タブではなくスペースでインデントしていると推測すると、最初に3に設定しtabifyてバッファの内容を処理しますtab-width。次にtab-width、4に変更して実行しますuntabify。」

于 2013-01-10T21:21:49.877 に答える
2

これは一種のハックですが、あなたに与えているゴミをあなたに与えること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つのスペースに変換されます。

于 2013-01-10T21:29:11.383 に答える
0

indent-region代わりにバッファで試してください。当初はC-M-\

于 2013-01-10T21:23:29.320 に答える
0

これはちょっとしたハックですが、「MX replace-string」、「」->「」への簡単な回避策として機能しました。次に、emacsがファイルに対して自動ID検出を行う場合は、閉じてから再度開く必要があります。次に、複数行のコード(タブ付き)と、スペースがたくさんある文字列を調べて修正する必要があります。

于 2013-09-05T21:22:13.153 に答える
0

これも役立つかもしれません:

http://www.emacswiki.org/emacs/IndentingPython

特に、PythonTidyは、小さな問題を伴う厄介なコードの再構築に非常に効果的です(残念ながら、ツールの構成は簡単ではありません)。

http://www.emacswiki.org/emacs/PythonProgrammingInEmacs#toc17

于 2014-02-13T15:41:36.867 に答える
0

役に立たないか、テーマごとではないかもしれませんが、私はそのようなスクリプトを使用しています。コマンドラインから実行します。(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()
于 2017-06-01T18:10:05.913 に答える