24

Ubuntu 10.04 で emacs 23.1.1 を使用しています。2 スペースのインデントを使用して Python でプログラミングしたいと考えています。emacs には python (python.el?) のデフォルト モードがあるようです。

私は.emacsに以下を入れました:

    ;; Only spaces, no tabs
    (setq indent-tabs-mode nil)

    ;; Always end a file with a newline
    (setq require-final-newline nil)

    ;; Don't know which of these might work
    (setq-default tab-width 2)
    (setq-default python-indent 2)
    (setq-default py-indent-offset 2)

Python ファイルを編集すると、4 スペースのインデントが使用されます。Ch v python-indent を試すと、次のように表示されます。

    python-indent's value is 4
    Local in buffer webpage_cache.py; global value is 2

        This variable is safe as a file local variable if its value
        satisfies the predicate `integerp'.

    Documentation:
    Number of columns for a unit of indentation in Python mode.
    See also `M-x python-guess-indent'

    You can customize this variable.

つまり、2 ではなく 4 です。変数をカスタマイズして保存しようとしましたが、まだ 4 です。customize-group indent を試しましたが、まだ 4 です。

emacsに注意を向けさせるにはどうすればよいですか?

4

3 に答える 3

22

これを .emacs ファイルに入れることができます:

(add-hook 'python-mode-hook '(lambda () 
 (setq python-indent 2)))

その理由

    (setq-default python-indent 2)

.emacs がロードされたときにこの変数が終了しないため、機能しない可能性があります。(しかし、私は emacs の初心者です。説明がよくわかりません。)

ただし、PEP 8 -- Style Guide for Python Codeは「インデント レベルごとに 4 つのスペース」を推奨しており、私は 4 つのスペースの方が読みやすいと感じています。私は実際にこのコードを使用して、4 つのスペースのインデントを強制します。

于 2010-12-13T03:33:35.047 に答える
18

.emacs ファイルまたは .emacs によって参照されるファイルに次を追加します。

(setq-default indent-tabs-mode nil)
(setq-default tab-width 2)

ローカライズしたい場合はフックを入れることができます

;; Python Hook
(add-hook 'python-mode-hook
          (function (lambda ()
                      (setq indent-tabs-mode nil
                            tab-width 2))))

編集:次の問題が設定を台無しにする可能性があることがわかりました:

  • ライブラリがロードされる前に変数を設定する
  • グローバル変数をリセットする他のパッケージ/構成

これらの両方の問題について、フックを作成し、変数をローカライズすると役立つことがわかりました。

于 2010-11-22T23:43:09.627 に答える
15

私は自分でこの問題に遭遇しました. のヘルプにpython-indentは、他の誰も言及していない大きな手がかりが含まれていると思います:

See also `M-x python-guess-indent'

python-guess-indentに設定してカスタマイズしない場合、 (インデントされたテキストを含む) Python バッファーごとnilpython.elが自動的に設定され、カスタマイズが無効になります。(一方、ローマにいるときは…)python-indentpython-indent

最後に、これが私の.emacsファイルに入ったものです(他のすべてのカスタム変数を無視します):

(custom-set-variables
 '(python-guess-indent nil)
 '(python-indent 2))
于 2011-11-17T04:04:58.483 に答える