web-dev-qa-db-ja.com

Atom-強制タブ幅2

完全にオープンソースにするために、SublimeTextからAtom)に切り替えました。

非常に単純なもので問題が発生しました:Atom常に(!)を使用し、どのような状況でもタブ幅2を使用し、タブをスペースに置き換えます。この設定はgeditまたはSublimeTextでは非常に単純です。 、しかし私が何をしようとしても:新しいファイルを開始するとき、タブサイズは2です(良いです!)。既存のファイルを使用するとき、タブサイズは時々4です。少し面倒です。

エディターでの現在の設定は、スクリーンショットに表示されています。

enter image description here

9
MenschMarcus

複数のタブ設定があります

各パッケージ( python-language など)には独自のタブ設定があります。言語がグローバルデフォルトを使用するか、独自のデフォルトを使用するかは、パッケージを作成した人次第ですが、通常はオーバーライドできます。

スクリーンショットでは、「タブタイプ」を「ソフト」に設定しています。これにより、タブではなくスペースを使用できるようになります。デフォルトのタブ幅2のままにしました。これがグローバル設定です。

ここで、「パッケージ」の下を見て「python」を検索すると、「language-python」という名前のパッケージが見つかります。その設定ボタンをクリックすると、構文固有の設定がいくつか見つかります。

  • Python文法
  • Pythonコンソールの文法
  • Pythonトレースバック文法
  • 正規表現(Python)文法

これらの文法のそれぞれには、独自のタブ長設定があります。ここで明示的に2に設定して、パッケージのデフォルトを上書きできます。 (おそらく最初のもの、Python文法)を気にするでしょう。)

Pythonは違います

Pythonの場合、パッケージはデフォルトで4スペースにデフォルト設定されるように明示的に構成されています。これは、おそらくPythonは空白について非常に意見があり、 PEP 8 は4スペースのインデントを推奨しているためです。 。デフォルトのパッケージ設定は、パッケージのソースで確認できます。

https://github.com/atom/language-python/blob/master/settings/language-python.cson

'autoIndentOnPaste': false
'softTabs': true
'tabLength': 4

これは、グローバルデフォルトを上書きします。そのため、Python Grammarは、ほとんどのパッケージとは異なり、グローバルタブ幅を尊重しません。

パッケージのオーバーライドがある場合があります

さらに、特定のパッケージは構文上の理由で設定を上書きします。たとえば、 language-make は、スペースではなく実際のタブをオーバーライドして使用します。これは、makeで必要なためです。

Pythonの場合、スペースを使用するためのオーバーライドがあります。 language-python設定ページには、インデントレベルを変更する場所がありますが、タブ文字の使用に切り替える方法はありません。 (Pythonのタブ文字と混合インデントは、デバッグが難しい構文エラーの非常に一般的な原因であるため、これはおそらく正当化されます。)

リロードが必要な場合があります

最後に、Atomウィンドウをリロードするまで、設定が完全​​に有効にならない場合があります。Window: Reloadコマンドを使用して行うことができます。またはキーボードを使用して:

  • マック: CtrlOptCmdL
  • Windows/Linux: CtrlAltR
9
Dan Lowe

これは私のために働いたものです。

  1. デフォルト以外のパッケージをすべて無効にする
  2. 開いた ~/.atom/config.cson、これを追加します(「*」要素と同じレベル)

".python.source":
  editor:
    autoIndent: true
    tabLength: 2
  1. すべてのパッケージを再度有効にします。

私は他の誰かからこの助けを得ました。私自身の発見ではありません。ただし、機密保持のため、出典を引用することはできません。

2
soham

Sohamの回答に基づいて、〜/ .atom/config.cson(osxを想定)のすべてのtabLength:フィールドを目的の長さに設定すると、問題が解決することがわかりました。

0
John Jiang